我有一个datagrid,在DataGridTemplateColumn中,我有一个togglebutton,当它被选中时,它会在ElementName绑定的帮助下打开一个Popup用于注释。
<WpfToolkit:DataGridTemplateColumn>
<WpfToolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid >
<StackPanel Orientation="Vertical">
<ToggleButton Content="C" Name="toggleButon" VerticalAlignment="Center" Background="Transparent"></ToggleButton>
<Popup Height="Auto" Width="300" IsOpen="{Binding ElementName=toggleButon,Path=IsChecked}" StaysOpen="True" AllowsTransparency="True">
<Border BorderThickness="2" Background="LightGray">
<StackPanel Margin="20" Orientation="Vertical">
<TextBlock Text="Bloomberg Run Text Comment" Foreground="Black"></TextBlock>
<TextBox Text="check"/>
</StackPanel>
</Border>
</Popup>
</StackPanel>
</Grid>
</DataTemplate>
</WpfToolkit:DataGridTemplateColumn.CellTemplate>
</WpfToolkit:DataGridTemplateColumn>
它按预期工作。但我很想知道elementName绑定是如何在rowlevel上工作的,因为ToggleButton的elementname对于每一行都是相同的。那么切换按钮如何仅在其范围内打开弹出窗口而不是任何其他行中的任何其他弹出窗口。
答案 0 :(得分:2)
这是因为名称在给定的XAML名称空间中应该是唯一的。 在WPF中,模板在根命名空间内具有唯一的XAML命名空间。
http://msdn.microsoft.com/en-us/library/ms746659.aspx#Namescopes_in_Styles_and_Templates