Как связать Border в XAML Silverlight 4 с переменной в моем коде C # ViewModel? - PullRequest
0 голосов
/ 18 февраля 2012

Я знаю, как связать атрибут границы XAML Silverlight, например, Высота, с переменной в моем коде C #. Но как я могу связать сам элемент Border с переменной типа Border в моем коде C #?

Допустим, в моем коде C # (ViewModel, а не code-behind) у меня есть переменная типа Border, называемая myBorder. То, что я хочу сделать, это что-то вроде этого в моем XAML:

<Border Source="{Binding myBorder}"/>

Но Source, Content и т. Д. Не являются атрибутами элемента Border, которые доступны для установки, так как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

Ваш XAML должен выглядеть следующим образом

<Border Background="{Binding Path=Background}" DataContext="{Binding myBorder}" Height="{Binding Path=Height}" Width="{Binding Path=Width}"/>

в вашей виртуальной машине

myBorder = new Border();
            myBorder.Height = 20;
            myBorder.Width = 30;
            myBorder.Background = Brushes.Blue;

Помните, что myBorder должен быть объявлен как свойство, а не поле

0 голосов
/ 21 октября 2014

Поскольку вы используете ViewModel, я бы понял, что вы пытаетесь следовать шаблону MVVM. В этом случае ваша ViewModel должна содержать данные, которые влияют на выбор границы (логическое значение - например, IsSelected -, перечисление и т. Д.), И для этого вам следует использовать IValueConverter. Ваш XAML будет выглядеть так:

<Border BorderBrush="{Binding IsSelected,Converter={StaticResource BlueIfTrueRedIfFalseConverter}}"/>

Для реализации вашего ValueConverter, смотрите следующую ссылку: http://timheuer.com/blog/archive/2008/07/30/format-data-in-silverlight-databinding-valueconverter.aspx

Это означает, что теперь у вас есть разделение интересов. Ваша ViewModel не должна заботиться о том, как она будет отображаться, это работа View.

...