【发布时间】:2011-12-23 21:42:51
【问题描述】:
我解决了一个简单的问题就搞砸了。我有一个带有填充模板属性的自定义控件。该模板是一个简单的 Grid,里面有一个 TextBox。此文本框使用 setter 和 getter 绑定到单例的属性。如何以编程方式强制 TextBox 从单例中读取值并将其放回?
<Window x:Class="Spike.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="305" Width="521" xmlns:my="clr-namespace:Spike" xmlns:Data="clr-namespace:Spike.Data">
<Grid>
<Grid.Resources>
<ControlTemplate x:Key="editingTemplate">
<Grid>
<TextBox Text="{Binding Source={x:Static Data:MyClass.Instance}, Path=Value2}"/>
</Grid>
</ControlTemplate>
</Grid.Resources>
<UserControl Template="{StaticResource editingTemplate}" HorizontalAlignment="Left" Margin="58,60,0,0" x:Name="myUserControl1" VerticalAlignment="Top" Height="75" Width="284" />
<Button Content="Update source" Height="23" HorizontalAlignment="Left" Margin="184,23,0,0" Name="button1" VerticalAlignment="Top" Width="111" Click="button1_UpdateSource" Focusable="False" />
<Button Content="Update control" Focusable="False" Height="23" HorizontalAlignment="Left" Margin="58,23,0,0" Name="button2" VerticalAlignment="Top" Width="111" Click="button2_UpdateControl" />
</Grid>
</Window>
namespace Spike.Data
{
public class MyClass
{
private static readonly MyClass MyClassInstance = new MyClass();
public MyClass()
{
Value1 = "value1";
Value2 = "value2";
}
public static MyClass Instance
{
get { return MyClassInstance; }
}
public string Value1 { get; set; }
public string Value2 { get; set; }
}
}
换句话说,应该在 button2_UpdateControl 和 button1_UpdateSource 方法中实现什么?
提前感谢您的帮助
【问题讨论】:
标签: wpf data-binding controltemplate