我正在尝试做一个简单的项目,我有一个类,其中一个属性是一个结构。该结构包含一个值。所以我想将Label Content绑定到此值。我怎么能这样做?
谢谢!
答案 0 :(得分:1)
要添加上面的AkSki答案......
如果您使用双向绑定(读取和写入)或单向源(只写)绑定到结构,它将无法正常工作。
结构总是按值传递,它们不是按引用传递的。这意味着当WPF在幕后传递它们时,它们将被复制为新值而不是通过它们的引用传递。这意味着WPF将写入副本,而不是原始结构。
执行双向或单向源绑定的唯一方法是绑定到类。
如果您只需要将此结构值显示为只读,请按照上面的AlSki的回答。
答案 1 :(得分:0)
您需要声明DependencyProperty以将您的值公开给WPF系统。见Dependecy Properties overview。可能值得声明类上的依赖属性,只需从结构中提取值。
如果现有数据对象仅用于后端数据(或模型),您可能还需要考虑使用前面的另一个类来公开WPF,这个新类通常称为ViewModel。请查看Josh Smith MVVM on MSDN以获得更好的解释。
答案 2 :(得分:0)
它只是有效。这是一个例子:
观点:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Label Content="{Binding FinalDestination.X}"/>
<Label Grid.Row="1" Content="{Binding FinalDestination.Y}"/>
</Grid>
</Window>
ViewModel:
using System.Windows;
namespace WpfApplication1
{
public class ViewModel
{
public Point FinalDestination { get; private set; }
public ViewModel()
{
FinalDestination = new Point(8, 8);
}
}
}
视图的代码隐藏:
namespace WpfApplication1
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
}
注意:我已经在.NET 4.5上的Visual Studio 2012中快速构建了这个,但我很确定它适用于旧技术