簡體   English   中英

顯示使用MVVM在Silverlight中將控件隱藏在datagrid內部

[英]Showing Hiding a control inside datagrid in silverlight with MVVM

我有一個如下的數據網格

**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>

以及在ViewModel中的相關屬性,如以下強文本所示

string _ellipsisVisibility;

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

                }
            }
        }

並將其設置為EllipsisVisibility =“ Collapsed”; 和EllipsisVisibility =“ Visible”;

有兩個問題1.顯示或隱藏列2不起作用。需要根據某些條件(如asp.net中的Rowdatabound事件)在幾行中顯示超鏈接按鈕或在幾行中隱藏。

怎么辦可以有人幫忙嗎???

(1)不幸的是, DataGrid列的可見性不是依賴項屬性。 這意味着它不能參與數據綁定。 一些解決方法包括您感興趣的列類型子類化

(2)為了顯示/隱藏特定控件,基於該行的數據,我將使用轉換器。 或在該實體類型上創建一個直接綁定到的新屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM