1

我有一个按钮模板:

<DataTemplate x:Key="TemplateTest">
    <Button Margin="10" BorderThickness="2" Content="{Binding Text}" />
</DataTemplate>

我想创建一个文本框和一个按钮,其内容与文本框的文本相同。

<TextBox x:Name="TextBox" Margin="10">TextBox</TextBox>
<ContentControl DataContext="{Binding ElementName=TextBox}"
    ContentTemplate="{StaticResource ResourceKey=TemplateTest}" />

但是我没有以这种方式在按钮上得到任何东西。

4

4 回答 4

2

@DanPuzey 的那个在 VS2012 中仍然不适合我。不知道为什么它在 Kaxaml

这做到了:

<TextBox x:Name="TextBox"
          Margin="10"
          Text="Hello World" />
<ContentControl Content="{Binding ElementName=TextBox,
                                  Path=.}"
                ContentTemplate="{StaticResource TemplateTest}" />

<DataTemplate x:Key="TemplateTest">
  <Button Height="100"
          Margin="10"
          BorderThickness="2"
          Content="{Binding Text}" />
</DataTemplate>
于 2013-04-18T11:29:17.113 回答
1

这是失败的,很简单,因为您没有设置内容控件的内容:设置DataContext不会改变任何内容。试试这个:

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

以上在 Kaxaml 中为我工作,但如果它不适合你,那么我建议你试试这个,它明确绑定到文本框的文本:

<ContentControl Content="{Binding Text, ElementName=TextBox}" ContentTemplate="{StaticResource ResourceKey=TemplateTest}" />
于 2013-04-18T10:58:47.500 回答
1

首先,您应该将 contentControl 的内容设置为绑定到文本

<TextBox x:Name="TextBox" Margin="10">TextBox</TextBox>
<ContentControl Content="{Binding ElementName=TextBox,Path=Text}"
ContentTemplate="{StaticResource ResourceKey=TemplateTest}" />

现在您需要更改按钮的绑定:

<DataTemplate x:Key="TemplateTest">
<Button Margin="10" BorderThickness="2" Content="{Binding}" />
</DataTemplate>
于 2013-04-18T11:28:52.317 回答
1

我不确定是否{Binding ElementName=TextBox}设置了默认值Binding.Path。您可以尝试将其设置Path.DataContext="{Binding ElementName=TextBox, Path=.}"

或者您可以直接绑定Text元素的属性:

<TextBox x:Name="TextBox" Margin="10">TextBox</TextBox>
<ContentControl DataContext="{Binding Text, ElementName=TextBox}"
    ContentTemplate="{StaticResource ResourceKey=TemplateTest}" />

<DataTemplate x:Key="TemplateTest">
    <Button Margin="10" BorderThickness="2" Content="{Binding}" />
</DataTemplate>
于 2013-04-18T11:48:19.710 回答