0

我正在尝试做一个简单的项目,其中我有一个类,它的一个属性是一个结构。此结构包含一个值。所以我想将一个标签内容绑定到这个值。我怎样才能做到这一点?

谢谢!

4

3 回答 3

1

要添加到上面 AkSki 的答案...

如果您使用双向绑定(读取和写入)或单向源(只写)绑定到结构,它不会像您预期的那样工作。

结构总是按值传递,它们不是按引用传递。这意味着当 WPF 在后台传递它们时,它们将被复制为新值,而不是通过它们的引用传递。这意味着 WPF 将写入副本,而不是原始结构。

执行双向或单向源绑定的唯一方法是绑定到类。

如果您只需要将此结构值显示为只读,请按照上面 AlSki 的回答。

于 2012-10-04T19:54:58.867 回答
0

您需要声明一个 DependencyProperty 以将您的值公开给 WPF 系统。请参阅依赖属性概述。可能值得在类上声明依赖属性并从结构中提取值。

如果您现有的 datat 对象只是用于您的后端数据(或模型),您可能还需要考虑在此之前使用另一个类来暴露给 WPF,这个新类通常称为 ViewModel。查看MSDN 上的 Josh Smith MVVM以获得很好的解释。

于 2012-10-04T19:53:33.453 回答
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>

视图模型:

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 中快速构建了这个,但我很确定它适用于旧技术

于 2012-10-04T19:57:47.173 回答