如何将Silverlight 4 XAML中的Border绑定到C#ViewModel代码中的变量
本文关键字:C#ViewModel 代码 变量 绑定 Border Silverlight 中的 XAML | 更新日期: 2023-09-27 18:25:05
我知道如何将Silverlight XAML边框的属性Height绑定到C#代码中的变量。但是,如何将Border项本身绑定到C#代码中Border类型的变量?
假设在我的C#代码(ViewModel,而不是代码隐藏)中,我有一个名为myBorder的Border类型的变量。我想在我的XAML中做这样的事情:
<Border Source="{Binding myBorder}"/>
但是Source、Content等都不是可设置的Border元素的属性,所以我该怎么做呢?
您的XAML应该类似于以下
<Border Background="{Binding Path=Background}" DataContext="{Binding myBorder}" Height="{Binding Path=Height}" Width="{Binding Path=Width}"/>
在您的vm 中
myBorder = new Border();
myBorder.Height = 20;
myBorder.Width = 30;
myBorder.Background = Brushes.Blue;
请记住,myBorder应声明为Property,而不是字段
由于您使用的是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的工作。