silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将Silverlight UserControl自定义属性绑定到其“元素”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我试图在Silverlight 2.0中制作一个简单的填字游戏。我正在使用一个UserControl-ish组件,代表拼图中的一个正方形。我将userControl的属性与其元素绑定时遇到麻烦。我终于得到了它的工作(可能对一些人有帮助 – 这需要我几个小时),但是想让它更加“优雅”。 我想象应该有一个内容和一个标签(在右上角)的隔间,可选地包含它的’号码。内容控件可能是一个TextBox,而标签控
我试图在Silverlight 2.0中制作一个简单的填字游戏。我正在使用一个UserControl-ish组件,代表拼图中的一个正方形。我将userControl的属性与其元素绑定时遇到麻烦。我终于得到了它的工作(可能对一些人有帮助 – 这需要我几个小时),但是想让它更加“优雅”。

我想象应该有一个内容一个标签(在右上角)的隔间,可选地包含它的’号码。内容控件可能是一个TextBox,而标签控件可能是一个TextBlock。所以我创建了一个具有这个基本结构的UserControl(这个值在这个阶段被硬编码):

<UserControl x:Class="XWord.Square"
    xmlns="http://scheR_164_11845@as.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://scheR_164_11845@as.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>@H_944_24@ 
 

我还在Square类中创建了DependencyProperties,如下所示:

public static readonly DependencyProperty LabelTextProperty;
     public static readonly DependencyProperty ContentCharacterProperty;

     // ...(static constructor with property registration,.NET properties
     // omitted for brevity)...@H_944_24@ 
 

现在我想知道如何将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 } );@H_944_24@ 
 

这将在XAML中更加优雅。有没有人知道如何做?

解决方法

首先,使用{Relativesource Self}在UserControl上设置DataContext:

<UserControl x:Class="XWord.Square"  
xmlns="http://scheR_164_11845@as.microsoft.com/winfx/2006/xaml/presentation"   
xmlns:x="http://scheR_164_11845@as.microsoft.com/winfx/2006/xaml"  
FontSize="30"   
Width="100" Height="100" 
DataContext="{Binding Relativesource={Relativesource Self}}">@H_944_24@ 
 

现在您可以将各个元素绑定到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" />@H_944_24@ 
 

对于SL 2.0,您需要在UserControl的Loaded事件处理程序中设置DataContext。

private void UserControl_Loaded( object sender,RoutedEventArgs e ) {
    LayoutRoot.DataContext = this;
}@H_944_24@

大佬总结

以上是大佬教程为你收集整理的将Silverlight UserControl自定义属性绑定到其“元素”全部内容,希望文章能够帮你解决将Silverlight UserControl自定义属性绑定到其“元素”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。