Silverlight: Привязка свойства дочерних элементов управления к свойству в пользовательском элементе управления

Не зная структуру данных вашей таблицы, трудно дать прямой ответ.

Однако я могу сказать, что один из ваших столбцов содержит нулевые значения и суммирование / вычитание значения из / в нулевые результаты с нулевым значением.

@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;
8
задан Jeremy 7 January 2009 в 18:57
поделиться

5 ответов

Единственный путь состоит в том, чтобы сделать это programically (например, в событии изменения для BkColor (предполагающий, что это - DependencyProperty), изменяют его в других местах на Вашем управлении. Кроме того, Вы могли использовать ControlTemplate и использовать TemplateBinding. Если Ваш UserControl является обходным решением для этого (например, никакое поведение/методы/события), то замените свой пользовательский элемент управления ContentControl и используйте Шаблон Bindng.

1
ответ дан 5 December 2019 в 19:04
поделиться

Смотрите на это сообщение в блоге: Обходное решение для пропавших без вести ElementName в Привязке Silverlight 2.0. Это кажется, что немного отличается от того, что Вы пытаетесь сделать, но Вы можете пререкаться его код, чтобы сделать то, что Вы хотите.Удачи!:-)

0
ответ дан 5 December 2019 в 19:04
поделиться
<LinearGradientBrush EndPoint="0.82,0.895" StartPoint="0.911,-0.442">                    
 <GradientStop Color="{TemplateBinding BackGround}" />
 <GradientStop Color="#00FFFFFF" Offset="1"/> </LinearGradientBrush>
0
ответ дан 5 December 2019 в 19:04
поделиться

Часто, когда я видел этот вопрос, ответ был "вы должны сделать это в коде", что звучало для меня как "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 и затем вручную устанавливать все.

8
ответ дан 5 December 2019 в 19:04
поделиться

Есть еще один вариант. Хотя кажется, что вы не можете связать сами значения цвета, вы можете связать все свойство 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
0
ответ дан 5 December 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: