尝试从 XAML 绑定到同一类的成员变量(从 .xaml 绑定到 .xaml.cs)

本文关键字:绑定 xaml cs 成员 一类 变量 XAML | 更新日期: 2023-09-27 18:31:57

在我的 XAML 中,我有代码

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel>
        <TextBlock Height="30" Name="tb1" Text="{Binding meetingX}" />
    </StackPanel>
</Grid>

在 .xaml 中.cs属于上面的 .xaml,我有

    public static Meeting theMeeting;
    public string meetingX;
    public MeetingOverview()
    {
        InitializeComponent();
        theMeeting = (Meeting)App.meetings.ElementAt(App.selectedMeetingIndex);
        meetingX = theMeeting.MeetingName.ToString();
    }
    public string MeetingX
    {
        get
        {
            return meetingX;
        }
        set
        {
            if (value != meetingX)
            {
                Debug.WriteLine("set meetingXto: " + value.ToString()); 
                meetingX= value;
            }
        }
    }

文本显示为空白,因此它不会读取会议 X 中的值。我添加了一个Debug.WriteLine来检查var中是否有一些文本。

谁能给我一些关于如何使我打算做的事情发挥作用的提示?

非常感谢,-法典

尝试从 XAML 绑定到同一类的成员变量(从 .xaml 绑定到 .xaml.cs)

只能绑定到属性:

Text="{Binding meetingX}" <!-- --> Text="{Binding MeetingX}"

您需要设置视图的数据上下文:

public MeetingOverview()
    {
        theMeeting = (Meeting)App.meetings.ElementAt(App.selectedMeetingIndex);
        meetingX = theMeeting.MeetingName.ToString();
        this.DataContext = this;
        InitializeComponent();        
    }

如果值要更改,则需要在类上实现 INotifyPropertyChanged。此外,您还应该查看 MVVM,因为此类信息应放置在 ViewModel 中。

这两个主题在网络上都有广泛的博客,所以我相信你内心的谷歌搜索者;)

希望这有帮助,

巴布。

将属性转换为 DependencyProperty:

public String MeetingX
{
  get { return (String)this.GetValue(MeetingXProperty); }
  set { this.SetValue(MeetingXProperty, value); } 
}
public static readonly DependencyProperty MeetingXProperty = DependencyProperty.Register(
    "MeetingX", typeof(String), typeof(MeetingOverview),new PropertyMetadata(""));