-1

我有 XAML 代码:

<TextBox Name="textBoxMask1"/>
<TextBox Name="textBoxMask2"/>
<TextBox Name="textBoxMask3"/>
...
<TextBox Name="textBoxMask9"/>

和 C# 中的类:

private static string mask1;
public static string Mask1
{
    get { return mask1; }
    set { mask1 = value; }
}

private static string mask2;
public static string Mask2
{
    get { return mask2; }
    set { mask2 = value; }
}

private static string mask3;
public static string Mask3
{
    get { return mask3; }
    set { mask3 = value; }
}
....
private static string mask9;
public static string Mask9
{
    get { return mask9; }
    set { mask9 = value; }
}

我想将这些 TextBoxes 与 Properties -> textBoxMask1 与 Mask1 等绑定。之前我是通过 TextChanged 完成的,但我想进行绑定。TooWay Binding,因为我想在另一个 C# 类中预定义 Mask1、Mask2、Mask3、...、Mask9,并且可能稍后更改这些值 - 也在某些 C# 代码中 - 我希望我的更改在布局中可见(XAML ) 并在 C# 代码中 - 所以前。从 C# 更改 Property Mask1 将更改 TextBox textBoxMask1 中的 Text,更改 textBoxMask1 中的 Text 将更改 Property Mask1。我不明白,如何在对象 XAML 和 C# 之间建立连接(绑定)。

4

1 回答 1

0

对于普通的绑定,您不需要您的属性是静态的,只需公开即可。这里有一个例子:

C# 代码(用于一个属性)

private string mask1;
public string Mask1
{
    get { return mask1; }
    set 
        { 
           mask2 = value;
           RaisePropertyChanged("Mask1");
        }
}

对于绑定来说,包含属性的类实现 INotifyPropertyChanged 接口,并且在每个属性的 setter 中引发相应的事件,这一点非常重要。另一种选择是将所有属性设为DependecyProperty,但这通常是矫枉过正。

至于 XAML:

<TextBox Name="textBoxMask1" Text="{Binding Mask1, Mode=TwoWay}"/>

(TwoWay Binding 是 Text 属性的默认设置,但明确放置它并没有什么坏处)。

只需确保包含您的 TexBoxes(通常是 UserControl)的对象的 DataContext 设置为您的 C# 类的有效实例。

顺便说一句,这是一个非常基本的问题,这就是为什么你得到了反对票而在我之前没有答案。所期望的是,您提出的问题对您来说是一个真正的问题,并给出了非常具体的答案,而不是像“教我如何做到这一点”之类的东西。

如果这回答了您的问题,请不要忘记将其标记为答案(左上角的“勾号”标记)。投票也将不胜感激。

希望它有帮助,问候。

于 2012-12-29T21:10:45.307 回答