How to give Data trigger property for custom usercontrol?

南笙酒味 提交于 2021-02-11 14:55:28

问题


I have created the custom usercontrol for datagrid as CustomDatagrid. And i am using that custom datagrid in another usercontrol as DatagridUserControl. I added Textblock inside the CustomDatagrid in DatagridUserControl. I gave x:Name for Textblock in DatagridUserControl.

                                <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. So I added DataTrigger property for Textblock.

                                                    <DataTemplate.Triggers>
                                                        <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="True">                                                           
                                                            <Setter TargetName="TxtBlkDescription" Property="Visibility" Value="Visible" />
                                                        </DataTrigger>
                                                    </DataTemplate.Triggers>

But I received the following error

Cannot set Name attribute value 'TxtBlkDescription' on element 'TextBlock'. 'TextBlock' is under the scope of element 'SLMDatagrid', which already had a name registered when it was defined in another scope.

How to overcome this error?

Or is there is any other way to display the Textblock only if Datagridrow is selected?

来源:https://stackoverflow.com/questions/62159327/how-to-give-data-trigger-property-for-custom-usercontrol

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!