Не зная структуру данных вашей таблицы, трудно дать прямой ответ.
Однако я могу сказать, что один из ваших столбцов содержит нулевые значения и суммирование / вычитание значения из / в нулевые результаты с нулевым значением.
@balance
определенно равно нулю в вашем случае
вы можете заменить свои столбцы на IFNULL
select
transaksi_perantara.debet,
transaksi_perantara.kredit,
@balance := IFNULL(@balance,0) +
IFNULL(transaksi_perantara.debet, 0) -
IFNULL(transaksi_perantara.kredit,0)
AS balance from transaksi_perantara;
Единственный путь состоит в том, чтобы сделать это programically (например, в событии изменения для BkColor (предполагающий, что это - DependencyProperty), изменяют его в других местах на Вашем управлении. Кроме того, Вы могли использовать ControlTemplate и использовать TemplateBinding. Если Ваш UserControl является обходным решением для этого (например, никакое поведение/методы/события), то замените свой пользовательский элемент управления ContentControl и используйте Шаблон Bindng.
Смотрите на это сообщение в блоге: Обходное решение для пропавших без вести ElementName в Привязке Silverlight 2.0. Это кажется, что немного отличается от того, что Вы пытаетесь сделать, но Вы можете пререкаться его код, чтобы сделать то, что Вы хотите.Удачи!:-)
<LinearGradientBrush EndPoint="0.82,0.895" StartPoint="0.911,-0.442">
<GradientStop Color="{TemplateBinding BackGround}" />
<GradientStop Color="#00FFFFFF" Offset="1"/> </LinearGradientBrush>
Часто, когда я видел этот вопрос, ответ был "вы должны сделать это в коде", что звучало для меня как "Silverlight binding не поддерживает это" - поэтому вы должны сделать это 'полностью вручную', устанавливая свойство вручную. Но это не так:
Silverlight binding поддерживает это - просто Silverlight XAML не поддерживает.
Вот пример UserControl
, который в основном обертывает DataForm
. В конструкторе вы запускаете привязку, которая может привязываться к вашему "свойству пользовательского элемента управления". Надеюсь, если они изменят поддержку XAML для этого в будущем, тогда это будет тривиально вернуться и исправить.
App.xaml
<AddressControl MyHeader="Shipping Address"/>
AddressControl.xaml
<UserControl>
<DataForm Name="dfAddress" Header="BOUND IN CODE"/>
</UserControl>
Необязательно: укажите, что вы связали значение в коде с помощью комментария
AddressControl.xaml.cs
publicAddressControl()
{
InitializeComponent();
// bind the HeaderProperty of 'dfAddress' to the 'MyHeader' dependency
// property defined in this file
dfAddress.SetBinding(DataForm.HeaderProperty,
new System.Windows.Data.Binding { Source = this,
Path = new PropertyPath("MyHeader") });
}
// standard string dependency property
public string MyHeader
{
get { return (string)GetValue(MyHeaderProperty); }
set { SetValue(MyHeaderProperty, value); }
}
public static readonly DependencyProperty MyHeaderProperty =
DependencyProperty.Register("MyHeader", typeof(string),
typeof(AddressControl), null);
Это связывает свойство MyHeader
моего AddressControl
usercontrol со свойством Header
формы данных. Я сделал его 'My' исключительно для удобочитаемости - но на самом деле я использую просто 'Header' в своем реальном коде.
Очень жаль, что мы все еще не можем сделать это в XAML, но это лучше, чем то, что я пытался сделать в первый раз - перехватывать события DataContextChanged
и затем вручную устанавливать все.
Есть еще один вариант. Хотя кажется, что вы не можете связать сами значения цвета, вы можете связать все свойство Background, например:
... а затем ...
Public ReadOnly Property Background As Brush
Get
Dim lgb As New LinearGradientBrush
lgb.GradientStops = New GradientStopCollection From {New GradientStop With {.Color = PrimaryColor, .Offset = 0.0}, New GradientStop With {.Color = SecondaryColor, .Offset = 1.0}}
lgb.StartPoint = New Point(0, 0)
lgb.EndPoint = New Point(1, 1)
Return lgb
End Get
End Property