2

我有一个私人领域

private static Double myValue;

在应用程序 MainWindow 类中。在那里(在 MainWindow 类中)我定义了一个属性

public static Double MytValue
{
    get { return myValue; }
}

在 MainWindow 类的结构中,我有一个 TextBox。我需要将它绑定到 MytValue 属性。在 XAML 中我写:

<TextBox Name="tbxMyValue" Grid.Row="1" Grid.Column="2" TextAlignment="Center"
         Text="{Binding Path=MyValue}" Width="Auto" Margin="10,0,10,15" IsEnabled="True" />

但它没有效果。当 myValue 变量有值时,我在 TextBox 中什么也看不到。为什么?请帮我。

4

4 回答 4

5

我喜欢在 Window 部分设置 DataContext

<Window x:Class="Gabe3a.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:Gabe3a"
        xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
        xmlns:System="clr-namespace:System;assembly=mscorlib"
        DataContext="{Binding RelativeSource={RelativeSource self}}"
        Title="Gabriel Main Ver 3a01" Icon="faviconw.ico" Height="600" Width="800">
于 2012-10-11T20:47:08.363 回答
4

您需要DataContext在 Window 后面设置该绑定才能工作

使用 WPF 的应用程序有两层:UI 层和数据层。

应用程序的数据层以 开头null,您可以使用DataContext属性对其进行设置。

每当您在 WPF 中进行基本绑定时,都会绑定到DataContext. Text="{Binding Path=MyValue}"实际上就是说“从当前获取属性MyValueDataContext

你可以简单地DataContext在你的代码中设置:

MyWindow.DataContext = this;

或者您可以使用RelativeSource绑定来告诉 WPFMyValue从其他地方获取属性,例如告诉它从它在向上导航时找到的最近的 Window 获取它VisualTree

Text="{Binding Path=MyValue, RelativeSource={
    RelativeSource AncestorType={x:Type Window}}}"

实际上,我的博客上有一篇文章,DataContext如果您是 WPF 新手,我建议您阅读这篇文章DataContext您所说的“DataContext”是什么?

于 2012-10-11T17:48:31.507 回答
0

这不是它的工作方式。绑定到静态属性;{绑定源={x:静态本地:Application.MyValue}}

请注意,您的字段需要是财产和公共的。如果您想使用您的解决方案,您需要将 DataContext 设置为 {RelativeSource Self}。

于 2012-10-11T17:45:47.960 回答
0

在构造函数的文件 MainWindow.xaml.cs 中添加以下行:

DataContext = this;

InitializeComponent();

于 2012-10-11T17:47:26.940 回答