代码之家  ›  专栏  ›  技术社区  ›  AZ_

wpf从另一个DataGridTextColumn按名称查找元素

  •  0
  • AZ_  · 技术社区  · 6 年前

    我想用另一个按钮 DataGridTemplateColumn ElementName 但它在回报我 unset framework value 在我的转换器里。我想根据按钮启用状态更改行颜色,但这是一个嵌套的控件 DataGrid .

    <DataGridTextColumn Header="{x:Static loc:ManageRequirementsResource.lblName}" Binding="{Binding Name}" Width="0.5*" HeaderStyle="{StaticResource DataGridDefaultColumnHeaderStyle}"
                                                                ElementStyle="{StaticResource UcPredecessorSuccessorEnableDisableStyle}"/>
                                                <DataGridTextColumn Header="{x:Static loc:ManageRequirementsResource.lblDescription}" Binding="{Binding Description}" Width="*" 
                                                                    HeaderStyle="{StaticResource DataGridColumnHeaderStyleWithoutRightBorder}">
                                                    <DataGridTextColumn.ElementStyle>
                                                        <Style BasedOn="{StaticResource ToolTipWithContentTrimmedTextBlockStyle}" TargetType="{x:Type TextBlock}">
                                                            <Style.Resources>
                                                                <converters:MultiBindingPredecessorSuccessorIsEnabledConverter x:Key="MultiBindingPredecessorSuccessorIsEnabledConverter"/>
                                                            </Style.Resources>
                                                            <Style.Triggers>
                                                                <DataTrigger Value="False">
                                                                    <DataTrigger.Binding>
                                                                        <MultiBinding Converter="{StaticResource MultiBindingPredecessorSuccessorIsEnabledConverter}">
                                                                            <Binding />
                                                                            <Binding ElementName="This" Path="ViewModel.SelectedRequirement"/>
    
    
    
    
    
    
     ##### Unable to find, UnSetValue, it's in another column
        <Binding ElementName="btnAddCommand"/> 
    
    ##### Unable to find, UnSetValue, it's in another column                                                                                
        <Binding ElementName="btnAddCommand" Path="IsEnabled"/> 
    
    
    
                                                                   </MultiBinding>
                                                                    </DataTrigger.Binding>
                                                                    <DataTrigger.Setters>
                                                                        <Setter Property="Background" Value="{StaticResource GridHeaderBackgroundBrush}"/>
                                                                        <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                                                                    </DataTrigger.Setters>
                                                                </DataTrigger>
                                                            </Style.Triggers>
    
                                                        </Style>
                                                    </DataGridTextColumn.ElementStyle>
    
                                                </DataGridTextColumn>
    
                                            <DataGridTemplateColumn  HeaderStyle="{StaticResource DataGridColumnNoBorderHeaderStyle}">
                                                <DataGridTemplateColumn.CellTemplate>
                                                    <DataTemplate>
                                                        <Button ToolTip="{x:Static reqPages:TraceabilityResource.linkToEditRequirementsTooltip}" Style="{StaticResource PopupMenueButtonStyle}" Click="LinkButton_OnClick" PreviewMouseLeftButtonUp="Button_OnMouseLeftButtonUp">
                                                            <Image Source="/Project;component/Resources/Images/link.png" Height="13" Width="13" />
                                                        </Button>
                                                    </DataTemplate>
                                                </DataGridTemplateColumn.CellTemplate>
                                            </DataGridTemplateColumn>
                                            <DataGridTemplateColumn  HeaderStyle="{StaticResource DataGridColumnNoBorderHeaderStyle}" x:Name="DataGridTemplateColumn">
                                                <DataGridTemplateColumn.CellTemplate>
                                                    <DataTemplate>
                                                            <Grid>
                                                                <Grid.Style>
                                                                    <Style TargetType="Grid">
                                                                        <Setter Property="Background" Value="White" />
                                                                        <Style.Triggers>
                                                                            <DataTrigger Binding="{Binding ElementName=btnAddCommand, Path=IsEnabled}" Value="False">
                                                                                <Setter Property="Background" Value="{StaticResource GridHeaderBackgroundBrush}" />
                                                                            </DataTrigger>
                                                                        </Style.Triggers>
                                                                    </Style>
                                                                </Grid.Style>
    
    
    
    **<!-- ######## I want to bind with this button ######-->**
    
    
                                                                <Button x:Name="btnAddCommand" ToolTipService.ShowOnDisabled="True" Command="{Binding ElementName=This, Path=ViewModel.AddingCommand}" CommandParameter="{Binding}" PreviewMouseLeftButtonUp="Button_OnMouseLeftButtonUp" Style="{StaticResource PopupMenueButtonStyle}">
                                                                    <Image  Height="20" >
                                                                        <Image.Source>
                                                                            <MultiBinding Converter="{StaticResource MultiBindingPredecessorSuccessorImageSourceConverter}">
                                                                                <Binding/>
                                                                                <Binding ElementName="This" Path="ViewModel.SelectedRequirement"/>
                                                                                <Binding ElementName="btnAddCommand"/>
                                                                                <Binding RelativeSource="{RelativeSource self}" Path="IsEnabled"/>
                                                                            </MultiBinding>
                                                                        </Image.Source>
                                                                    </Image>
                                                                    <Button.ToolTip>
                                                                            <MultiBinding Converter="{StaticResource MultiBindingPredecessorSuccessorToolTipConverter}">
                                                                                <Binding/>
                                                                                <Binding ElementName="This" Path="ViewModel.SelectedRequirement"/>
                                                                                <Binding ElementName="btnAddCommand"/>
                                                                                <Binding ElementName="This" Path="ViewModel.IsSuccessor"/>
                                                                                <Binding RelativeSource="{RelativeSource self}" Path="IsEnabled"/>
                                                                            </MultiBinding>
                                                                    </Button.ToolTip>
                                                                </Button>
                                                            </Grid>
                                                    </DataTemplate>
                                                </DataGridTemplateColumn.CellTemplate>
                                            </DataGridTemplateColumn>
                                        </DataGrid.Columns>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   mm8    6 年前

    不能绑定到在另一列的模板中定义的元素。它们属于不同的名称。

    您应该做的是将两列中元素的属性绑定到同一个源属性。

    INotifyPropertyChanged 接口并引发数据绑定源属性的更改通知。