gpt4 book ai didi

wpf - 如何将 WPF 控件绑定(bind)到后面的代码?

转载 作者:行者123 更新时间:2023-12-05 00:21:48 28 4
gpt4 key购买 nike

我有这个 XAML:

<Window x:Class="WpfBindToCodeBehind.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
Loaded="Window_Loaded">
<StackPanel Orientation="Vertical">
<Button Name="ToggleExpand" Click="ToggleExpand_Click">Toggle Expander</Button>
<Expander Name="Expander"
Header="Don't click me, click the button!"
IsExpanded="{Binding RelativeSource={RelativeSource Self},Path=MayExpand}">
<TextBlock Text="{Binding}"/>
</Expander>
</StackPanel>
</Window>

这是背后的代码:

public partial class Window1 : Window,INotifyPropertyChanged 
{
public event PropertyChangedEventHandler PropertyChanged;

public Window1()
{
InitializeComponent();
}

private void ToggleExpand_Click(object sender, RoutedEventArgs e)
{
MayExpand = !mayExpand;
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
Expander.DataContext = "Show me";
}

private bool mayExpand;
public bool MayExpand
{
get { return mayExpand; }
set
{
mayExpand = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("MayExpand"));
}
}
}

IsExpanded 属性的绑定(bind)表达式不起作用。这段代码是一种简化,实际上扩展器的绑定(bind)已经通过父控件的数据内容设置。
如何将 IsExpanded 属性绑定(bind)到后面代码的属性?
我可以将它绑定(bind)到后面代码中方法的结果吗?

最佳答案

绑定(bind)的源是一个RelativeSource.Self。这意味着源是 Expander 而不是 Window。这样的事情会起作用:

IsExpanded="{Binding MayExpand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}"

您还可以使用名称来简化事情:

<Window x:Name="_root">
<Expander IsExpanded="{Binding MayExpand, ElementName=_root}"/>

关于wpf - 如何将 WPF 控件绑定(bind)到后面的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1308840/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com