我想象应该有一个内容和一个标签(在右上角)的隔间,可选地包含它的’号码。内容控件可能是一个TextBox,而标签控件可能是一个TextBlock。所以我创建了一个具有这个基本结构的UserControl(这个值在这个阶段被硬编码):
<UserControl x:Class="XWord.Square" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" FontSize="30" WIDth="100" Height="100"> <GrID x:name="LayoutRoot" Background="White"> <GrID.ColumnDeFinitions> <ColumnDeFinition WIDth="*"/> <ColumnDeFinition WIDth="auto"/> </GrID.ColumnDeFinitions> <GrID.RowDeFinitions> <RowDeFinition Height="auto"/> <RowDeFinition Height="*"/> </GrID.RowDeFinitions> <TextBlock x:name="Label" GrID.Row="0" GrID.Column="1" Text="7"/> <TextBox x:name="Content" GrID.Row="1" GrID.Column="0" Text="A" borderThickness="0" /> </GrID> </UserControl>
我还在Square类中创建了DependencyPropertIEs,如下所示:
public static Readonly DependencyProperty LabelTextProperty; public static Readonly DependencyProperty ContentCharacterProperty; // ...(static constructor with property registration,.NET propertIEs // omitted for brevity)...
现在我想知道如何将Label和Content元素绑定到这两个属性。我这样做(在代码隐藏文件中):
Label.SetBinding( TextBlock.TextProperty,new Binding { Source = this,Path = new PropertyPath( "LabelText" ),Mode = BindingMode.OneWay } ); Content.SetBinding( TextBox.TextProperty,Path = new PropertyPath( "ContentCharacter" ),Mode = BindingMode.TwoWay } );
这将在XAML中更加优雅。有没有人知道如何做?
解决方法 首先,使用{relativeSource Self}在UserControl上设置DataContext:<UserControl x:Class="XWord.Square" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" FontSize="30" WIDth="100" Height="100" DataContext="{Binding relativeSource={relativeSource Self}}">
现在您可以将各个元素绑定到usercontrol的属性:
<TextBlock x:name="Label" GrID.Row="0" GrID.Column="1" Text="{Binding LabelText}"/> <TextBox x:name="Content" GrID.Row="1" GrID.Column="0" Text="{Binding ContentCharacter}" borderThickness="0" />
对于SL 2.0,您需要在UserControl的Loaded事件处理程序中设置DataContext。
private voID UserControl_Loaded( object sender,RoutedEventArgs e ) { LayoutRoot.DataContext = this;}总结
以上是内存溢出为你收集整理的将Silverlight UserControl自定义属性绑定到其“元素”全部内容,希望文章能够帮你解决将Silverlight UserControl自定义属性绑定到其“元素”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)