c# - 如何为自定义用户控件提供数据触发器属性?
问题描述
我已经为数据网格创建了自定义用户控件作为 CustomDatagrid。我在另一个用户控件中使用该自定义数据网格作为 DatagridUserControl。我在 DatagridUserControl 的 CustomDatagrid 中添加了 Textblock。我在 DatagridUserControl 中为 Textblock 提供了 x:Name。
<GridControl:CustomDatagrid Grid.Row="2" Height="260" Width="640" x:Name="GridTask" BorderThickness="0" FontSize="24" Foreground="White" SelectionChanged="slmGridTask_SelectionChanged"
ColumnWidth="*" CanUserResizeColumns="False" Background="Transparent">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Margin="-50,0,0,0" HorizontalAlignment="Left">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<WrapPanel Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="-50,0,0,0">
<TextBlock Text="{Binding Name}" TextWrapping="WrapWithOverflow"
TextAlignment="Justify" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="-20,0,0,0" />
</WrapPanel>
<Grid Margin="-60,0,0,0" Grid.Row="1" >
<TextBlock x:Name="TxtBlkDescription" Margin="0,0,0,0" TextWrapping="Wrap" Text="{Binding Description}" Visibility="Collapsed" FontWeight="Regular" Foreground="White" FontSize="18" FontFamily="Open Sans" HorizontalAlignment="Left" />
</Grid>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</GridControl:CustomDatagrid>
That textblock should display only if datagridrow is selected. 所以我为 Textblock 添加了 DataTrigger 属性。
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="True">
<Setter TargetName="TxtBlkDescription" Property="Visibility" Value="Visible" />
</DataTrigger>
</DataTemplate.Triggers>
但我收到以下错误
无法在元素“TextBlock”上设置名称属性值“TxtBlkDescription”。“TextBlock”在元素“SLMDatagrid”的范围内,当它在另一个范围中定义时,它已经注册了一个名称。
如何克服这个错误?
或者只有在选择 Datagridrow 的情况下,还有其他方法可以显示 Textblock 吗?
解决方案
推荐阅读
- angular - 如何测试控制台值以满足单元测试?
- javascript - 如何将两个数组(具有 json 对象)推入一个新数组
- c# - 跨同一台计算机上的用户会话的 WCF 命名管道。可能的?
- aws-lambda - 在 AWS Lambda 函数中运行 Sharp 时出错:darwin-x64' 二进制文件不能在 'linux-x64' 平台上使用
- recaptcha - 来自recaptcha 的站点密钥是否被认为是敏感的?
- jsf - JSF FacesMessage 只显示一次,但应该在每次发生错误时显示
- c - Socket编程中listen()的目的是什么?
- google-analytics - GA 用户资源管理器显示零秒会话时间
- java - 将旧版 Spring MVC + JSP 应用程序与 Angular 应用程序一起运行是个好主意吗?
- ios - 在整个应用程序生命周期中运行 CLLocation