相关疑难解决方法(0)

绑定WPF中DataGridColumn的可见性

如何DataGrid通过绑定隐藏WPF中的列?

这就是我做的:

<DataGridTextColumn Header="Column header"
                    Binding="{Binding ColumnValue}"
                    Width="100"
                    ElementStyle="{StaticResource DataGridRightAlign}"
                    Visibility="{Binding MyColumnVisibility}" />
Run Code Online (Sandbox Code Playgroud)

这就是我得到的(除了列仍然可见):

System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement.BindingExpression:路径= MyColumnVisibility; 的DataItem = NULL; target元素是'DataGridTextColumn'(HashCode = 1460142); 目标属性是"可见性"(类型"可见性")

不知道什么是治理手段.在我窗口的某个地方是否有一些总统先生决定哪些有效,哪些无效?或者我必须投票?

在网上搜索解决方案时,我发现有十几页具有很好的标题,但完全不相关或不可复制的内容.所以这似乎是关于这个问题的第一个问题.任何的想法?

wpf xaml datagrid visibility

63
推荐指数
2
解决办法
4万
查看次数

使用ElementName绑定不起作用

这是XAML:

<DataGrid Grid.Column="0"  AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding Path=Columns}"
              x:Name="ColumnsGrid" RowHeaderWidth="0">
        <DataGrid.Columns>
            <DataGridTextColumn Width="*" Binding="{Binding Path=Header}" 
                                Header="{Binding ElementName=ColumnsGrid, Path=DataContext.Count, StringFormat=Columns ({0}), diag:PresentationTraceSources.TraceLevel=High}"/>
        </DataGrid.Columns>  
    </DataGrid>
Run Code Online (Sandbox Code Playgroud)

绑定返回错误:System.Windows.Data错误:2:无法找到目标元素的管理FrameworkElement或FrameworkContentElement.

我错过了什么?

更新:

答案如下:http: //blogs.msdn.com/b/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx

这里发生了什么?Columns集合只是Datagrid中的一个属性; 此集合不在逻辑(或可视)树中,因此DataContext不会被继承,这会导致无法绑定.

更新2: 关于DataGrid警告的好文章:http://blogs.msdn.com/b/vinsibal/archive/2009/04/07/5-random-gotchas-with-the-wpf-datagrid.aspx

wpf binding

7
推荐指数
1
解决办法
4420
查看次数

WPF UserControl上下文菜单可见性绑定

我的用户控件上下文菜单可见性无法绑定依赖项属性.任何的想法?

这是我的WPF代码

<UserControl.ContextMenu>
    <ContextMenu Visibility="{Binding ElementName=wellControl, Path=IsInCompactMode, Converter={StaticResource BooleanToVisibilityConverter}}">
    <MenuItem Command="local:GCommands.Edit" />
    <MenuItem Command="local:GCommands.Delete" />
    <MenuItem Command="local:GCommands.ExportFcsFiles" />
    <MenuItem Command="local:GCommands.BatchExportStatistics" />
    <Separator/>
    <MenuItem Command="local:GCommands.SaveAs" Header="Save As..." />
    </ContextMenu>
</UserControl.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

如果我设置Visibility ="Hidden",它将对我有用.像这样:

<ContextMenu Visibility="Hidden"/>
Run Code Online (Sandbox Code Playgroud)

如果使用它,它将无法正常工作

<ContextMenu Visibility="{Binding ElementName=wellControl, Path=IsInCompactMode, Converter={StaticResource BooleanToVisibilityConverter}}">
Run Code Online (Sandbox Code Playgroud)

我很确定Visibility ="{Binding ElementName = wellControl,Path = IsInCompactMode,Converter = {StaticResource BooleanToVisibilityConverter}}"没有问题,因为它适用于其他人.

这是我的依赖属性

public bool IsInCompactMode
        {
            get {return (bool)GetValue(IsInCompactModeProperty); }
            set {SetValue(IsInCompactModeProperty, value); }
        }
        public static readonly DependencyProperty IsInCompactModeProperty =
            DependencyProperty.Register("IsInCompactMode", typeof(bool), typeof(WellControl), new PropertyMetadata(false));
Run Code Online (Sandbox Code Playgroud)

我试过这种方式,似乎它仍然不起作用,这真是太奇怪了!

<ContextMenu x:Name="menu" IsOpen="{Binding ElementName=wellControl, …
Run Code Online (Sandbox Code Playgroud)

wpf user-controls contextmenu

5
推荐指数
1
解决办法
9741
查看次数

标签 统计

wpf ×3

binding ×1

contextmenu ×1

datagrid ×1

user-controls ×1

visibility ×1

xaml ×1