gpt4 book ai didi

c# - 代码隐藏不能像 XAML 一样工作

转载 作者:行者123 更新时间:2023-11-30 20:58:30 25 4
gpt4 key购买 nike

我正在学习 WPF,但遇到了一些问题。我制作了这个 XAML:

<Window.Resources>
<DataTemplate x:Key="TemplateTest">
<Button Margin="10"
BorderThickness="2"
Content="{Binding Path=Text}">
<Button.Effect>
<DropShadowEffect BlurRadius="20" />
</Button.Effect>
</Button>
</DataTemplate>
</Window.Resources>

<StackPanel x:Name="StackPanel">
<TextBox x:Name="TextBox"
Margin="10">TextBox</TextBox>

<ContentControl Content="{Binding ElementName=TextBox, Path=.}"
ContentTemplate="{StaticResource ResourceKey=TemplateTest}" />
</StackPanel>

以及背后的代码:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var Resource = this.Resources["TemplateTest"] as DataTemplate;

StackPanel.Children.Add(
new ContentControl()
{
Content = new Binding()
{
ElementName = "TextBox",
Path = new PropertyPath(".")
},

ContentTemplate = Resource,
});
}
}

picture

我的问题是文本框的文本只出现在 XAML 定义的控件中。如何使其在后台代码中也能正常工作?

最佳答案

您将 ContentControl.Content 设置为 Binding,这与将 Content 属性绑定(bind)到一个值不同。

要在后面的代码中绑定(bind)一个属性,您需要这样的语法:

var newControl new ContentControl();
newControl.ContentTemplate = Resource;

Binding b = new Binding();
b.ElementName = "TextBox";
b.Path = new PropertyPath(".");

myContentControl.SetBinding(ContentControl.ContentProperty, b);

关于c# - 代码隐藏不能像 XAML 一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16085338/

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