Я изучаю WPF, и у меня есть некоторые проблемы с ним. Я сделал этот код XAML:Код позади не работает как 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,
});
}
}
Моя проблема заключается в том, что текст в текстовое поле только появляется в XAML определенный контроль. Как заставить его работать и в коде?
ли вы получить какие-либо обязательные ошибки? И это работает, если вы удалите XAML-копию элемента управления? – Rachel
Это не работает, если я удаляю его, но я заметил это только сейчас: Ошибка System.Windows.Data: 40: Ошибка пути BindingExpression: свойство «Текст» не найдено на «объекте» «Связывание» (HashCode = 23914501). BindingExpression: Path = Text; DataItem = 'Binding' (HashCode = 23914501); целевым элементом является «Button» (Name = ''); target - это «Content» (тип «Object») –