【问题标题】:Showing Hiding a control inside datagrid in silverlight with MVVM显示使用 MVVM 在 Silverlight 中隐藏数据网格内的控件
【发布时间】:2014-09-03 03:50:12
【问题描述】:

我有一个如下所示的数据网格

**strong text**

 <sdk:DataGrid AutoGenerateColumns="False" Height="Auto" MaxHeight="500" 
                          HorizontalAlignment="Left" Margin="5" Name="_EmployeeGrid" 
                          ItemsSource="{Binding Path= Employees,Mode=TwoWay}"
                          HorizontalScrollBarVisibility="Auto"
                          ScrollViewer.HorizontalScrollBarVisibility="Auto"
                          ScrollViewer.VerticalScrollBarVisibility="Auto"
                          Visibility="Visible"
                          VerticalAlignment="Top" Width="Auto">
                                    <sdk:DataGrid.Columns>

                                        <sdk:DataGridTextColumn Header="Employee ID" IsReadOnly="True" Binding="{Binding Path=EmpID}"/>
                                        <sdk:DataGridTemplateColumn Header="Name" SortMemberPath="EmpID">
                                            <sdk:DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <HyperlinkButton VerticalAlignment="Center" NavigateUri="{Binding Path=EmpID, 
                                            Converter={StaticResource NavigatePropertyUriConverter}, ConverterParameter=EmpView}"
                                            Content= "{Binding Path=EmpID}" >
                                                    </HyperlinkButton>
                                                    <!--<HyperlinkButton NavigateUri= "{ Binding Converter={StaticResource navigateConv}, ConverterParameter=/Property/IssuesView?}" VerticalAlignment="Center"
                                                     Content="{Binding Path=PropertyId}"
                                                         HorizontalAlignment="Right" Margin="5"/>-->
                                                </DataTemplate>
                                            </sdk:DataGridTemplateColumn.CellTemplate>
                                        </sdk:DataGridTemplateColumn>


                                        <!--<sdk:DataGridTextColumn Header="Property #" IsReadOnly="True" Binding="{Binding Path=PropertyId}"/>-->
                                        <sdk:DataGridTextColumn Header="Address" IsReadOnly="True" Binding="{Binding Path=Address}"/>
                                        <sdk:DataGridTextColumn Header="Category" IsReadOnly="True" Binding="{Binding Path=CategoryName}"/>
                                        <sdk:DataGridTextColumn Header="Phone" IsReadOnly="True" Binding="{Binding Path=UnitId}" Visibility="Collapsed"/>



                                        <!--<sdk:DataGridTextColumn Header="Notes" Binding="{Binding Comments}" IsReadOnly="False" />-->


                                        <sdk:DataGridTemplateColumn x:Name="Notes1" Header="Notes">
                                            <sdk:DataGridTemplateColumn.CellTemplate>
                                                <DataTemplate>
                                                    <StackPanel Orientation="Horizontal" >
                                                        <TextBlock  MaxWidth="200"  TextAlignment="Left" TextWrapping= "Wrap" Text="{Binding Path=Comments, Mode=OneWay}" Width="200" />
                                                        <HyperlinkButton Name="btnEllipsis" Visibility="{Binding EllipsisVisibility,Source={StaticResource ViewModel}}" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="15" Content="..."  ToolTipService.ToolTip="Click For More" Command="{Binding NotesCommand,Source={StaticResource ViewModel}}" CommandParameter="{Binding}" >
                                                        </HyperlinkButton>


                                                    </StackPanel>
                                                </DataTemplate>
                                            </sdk:DataGridTemplateColumn.CellTemplate>
                                        </sdk:DataGridTemplateColumn>


                                </sdk:DataGrid>

以及视图模型中的相关属性如下 强文本

string _ellipsisVisibility;

        public string EllipsisVisibility
        {
            get { return _ellipsisVisibility; }
            set
            {
                if (_ellipsisVisibility != value)
                {
                    _ellipsisVisibility = value;
                    RaisePropertyChanged("EllipsisVisibility");

                }
            }
        }

并将其设置为 EllipsisVisibility="折叠"; 和 EllipsisVisibility="可见";

有两个问题 1.显示或隐藏列不起作用 2. 需要根据asp.net中的Rowdatabound事件等条件,将超链接按钮分几行显示或隐藏几行。

怎么办,谁能帮忙???

【问题讨论】:

    标签: silverlight mvvm


    【解决方案1】:

    (1) DataGrid 不幸的是,列可见性不是依赖属性。这意味着它不能参与数据绑定。对此的一些解决方法涉及您感兴趣的subclassing the column type

    (2) 要根据该行的数据显示/隐藏特定控件,我将使用转换器。或者在该实体类型上创建一个新属性以直接绑定到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 2011-04-22
      • 2011-12-24
      • 2011-02-03
      • 2012-03-11
      相关资源
      最近更新 更多