标签: itemssource

3
推荐指数
2
解决办法
1万
查看次数

WPF:两个DataGrids,相同的ItemsSource,一个IsReadOnly,Bug?

我有一个WPF应用程序与两个DataGrids共享相同的ItemsSource.当我将DataGrid的一个IsReadOnly属性设置为true时,我将无法将记录添加到其他DataGrid.我仍然可以编辑第二个数据网格的内容,但只是无法添加记录.

这是有意的吗?这有什么办法吗?我可以对DataGrid使用IsEnabled ="False",但是我失去了滚动它的能力.

这是设置:

XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <DataGrid Name="dgA" Grid.Row="0" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" />
            <DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" />
        </DataGrid.Columns>         
    </DataGrid>
    <DataGrid Name="dgB" Grid.Row="1" AutoGenerateColumns="False" IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" />
            <DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

C#:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        List<Person> persons = new List<Person>();
        persons.Add(new Person() { FirstName = "Bob", LastName = "Johnson" });
        persons.Add(new Person() { …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid itemssource

3
推荐指数
1
解决办法
2224
查看次数

更改ItemsSource时,GridView列宽不会更新

我有一个GridView,我在代码隐藏中设置ItemsSource.网格中的所有列都在XAML中定义,所有列宽都是"自动".当我最初设置网格的ItemsSource时,列宽正确设置.

现在,根据用户的操作,可以将网格的ItemsSource设置为新的EntityCollection.我注意到的是,列宽仍然与之前的ItemsSource一样.也就是说,当为Grid设置新的ItemsSource时,列宽似乎不会自动调整.代码隐藏或XAML中是否有任何方法可以在设置列宽时强制Grid使用新的ItemsSource?我认为这将是GridView在重置ItemsSource时自动执行的操作.

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <ListView>
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn Width="Auto" Header="Status">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Image Width="16" Height="16" Source="{Binding Path=Blocking}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Width="Auto" Header="Title">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock TextTrimming="CharacterEllipsis" Text="{Binding}" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

wpf xaml binding gridview itemssource

3
推荐指数
2
解决办法
5245
查看次数

在WPF中绑定DataGridTextColumn可见性属性

我有一个ItemsSource绑定到a 的数据网格CollectionViewSource.
在每列中,我指定Path绑定的属性以获取要显示的特定信息.

如果用户想要更多信息,我想要做的是用一个复选框切换一些列.为此,我需要将visibility属性绑定到复选框的值(使用转换器),但我非常确定列的数据上下文是否干扰绑定.

<DataGrid ItemsSource="{Binding Source={StaticResource cvs}}" ....>
    <DataGrid.Columns>
        <DataGridTextColumn Header="First Name" Binding="{Binding Path=FirstName}"
            Visibility="{Binding IsChecked,
                                 ElementName=IncludeFullHist, 
                                 Converter={StaticResource boolItemsConverter}}"/>   
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

我也需要我的viewmodel中的复选框,所以我将其IsChecked属性绑定到我的ViewModel上的属性

<CheckBox x:Name="IncludeFullHist"  IsChecked="{Binding Path=ManagerFullHist }" />
Run Code Online (Sandbox Code Playgroud)

对于我页面中的其他元素,我已经能够使用以下两种方法中的任何一种来连接可见性绑定,但是当我将它们复制到datagrid时似乎都不起作用:

<TextBlock DockPanel.Dock="Left" Text=" Visible 2 " 
    Visibility="{Binding Path=DataContext.ManagerFullHist,
                         RelativeSource={RelativeSource FindAncestor,
                         AncestorType={x:Type UserControl}},
                         Converter={StaticResource boolItemsConverter}}"/>
<TextBlock DockPanel.Dock="Left" Text=" Visible 3 " 
    Visibility="{Binding Path=ManagerFullHist, 
                         Source={StaticResource mainWinResource},
                         Converter={StaticResource boolItemsConverter}}"/>
Run Code Online (Sandbox Code Playgroud)

关于我可以在datagrid中解决这个问题的方法的任何建议?
如果我省略了任何可能有用的代码,请告诉我.

data-binding wpf xaml bindingsource itemssource

3
推荐指数
1
解决办法
4628
查看次数

如何使用RelativeSource Binding创建DataGrid绑定到Model和ViewModel?

我有一个具有使用DataGrid的ItemsSource时结合DataGridTemplateColumn一个DataGrid,但在DataGridTemplateColumn的组合框,我希望能够绑定到视图模型的视图,而不是的ItemsSource.

 <DataGrid ItemsSource="{Binding ModelValues, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
      <DataGridTemplateColumn Header="myHeader" Width="200">
           <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                     <ComboBox DisplayMemberPath="Value" SelectedValuePath="Key" IsEnabled="False"
                          SelectedValue="{Binding myID, Mode=TwoWay}"
                          ItemsSource="{Binding Path=myList, 
                          RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ViewModel}}}" />
                </DataTemplate>
           </DataGridTemplateColumn.CellTemplate>
           <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                     <ComboBox DisplayMemberPath="Value" SelectedValuePath="Key" IsEnabled="False"
                          SelectedValue="{Binding myID, Mode=TwoWay}"
                          ItemsSource="{Binding Path=myList, 
                          RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ViewModel}}}" />
                </DataTemplate>
           </DataGridTemplateColumn.CellEditingTemplate>
      </DataGridTemplateColumn>
 </DataGrid>
Run Code Online (Sandbox Code Playgroud)

ViewModel有一个ModelValues属性和myList属性.将ModelValues用于ItemsSourceDataGrid,我想用myListComboBox ItemsSource.

我如何更改RelativeSource命令以使其有效?

c# binding datagrid relative-path itemssource

3
推荐指数
1
解决办法
7009
查看次数

使用MVVM在WPF中进行COMBOBOX过滤

我正在使用WPF mvvm方法开发一个应用程序.我有一个要求,我必须在组合框中显示项目列表供选择.基于某些标志,我需要从组合框中过滤掉一些项目以供选择.

我尝试使用两个不同的项目源,一个带有完整列表,另一个带有过滤列表,并根据标志我想要更改项目源.这似乎不太好用.有没有简单的方法根据某些标志在现有列表上应用过滤器?

wpf combobox mvvm itemssource

3
推荐指数
1
解决办法
1万
查看次数

将列表绑定到WPF中的ListBox

我有一个叫做Person名字,年龄和性别属性的课程.我也有List<Person>5个人(现在硬编码,但不相关).我想通过XAML将它绑定到ListBox,因此它为每个属性都有三个TextBlock:

<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel>
            <TextBlock Text="{Binding Path=name}" />
            <TextBlock Text="{Binding Path=gender}" />
            <TextBlock Text="{Binding Path=age}" />
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

问题是我不知道用什么作为数据上下文或项目源或其他什么.有任何想法吗?

data-binding wpf itemssource

3
推荐指数
1
解决办法
3373
查看次数

WPF DataContext与ItemsSource性能

假设我们有一个ItemsControl,它与一个源有关.两者之间是否有任何性能差异

ItemsControl.DataContext = resultSet;
Run Code Online (Sandbox Code Playgroud)

ItemsControl.ItemsSource = resultSet;
Run Code Online (Sandbox Code Playgroud)

(在两种情况下都在XAML中正确绑定)

wpf datacontext performance itemssource

2
推荐指数
1
解决办法
3376
查看次数

将MVVM应用于使用UserControls填充的ItemsControl

当我用当前的应用程序敲除越来越多的MVVM相关问题时,更多的只是不断涌现.:)

我想要替换的当前实现涉及StackPanel,其子项或多或少是动态生成的(通过查看配置文件).每个子节点都是UserControl的一个实例.之前,我所做的是为StackPanel分配一个名称,然后在Window_Loaded事件处理程序中,我只需确定必要的子项数,为每个子实例化一个UserControl,并为UserControl分配一个ID,这样我就知道了单击特定UserControl实例的按钮的正确来源; 每个UserControl上都有3个按钮.

所以我知道我想将StackPanel绑定到一个集合.这当然是不可能的,因为我需要使用从ItemsControl派生的东西,比如ListBox或ListView(甚至ItemsControl本身).为了在MVVM-ifying的第一次迭代中保持简单,我将只使用ListBox.

现在的问题是,我的代码隐藏中的ObservableCollection应该是一个ObservableCollection吗?我相信这意味着无论我如何为我的GUI设置外观,这个ListBox总是会有孩子看起来像他们在MyUserControl的XAML文件中那样.我希望这也可以自定义,但我认为这意味着我必须将MVVM模式应用于UserControl.

wpf mvvm itemssource

2
推荐指数
1
解决办法
1129
查看次数

从WPF绑定列表框中删除项目

我有一个带有ListBox(名为listMyItems)的WPF应用程序,它成功绑定到我创建的一类MyItems.我有一个名为currentMyItems的MyItems列表,然后将其作为ItemSource分配给ListBox.一切正常,如果我将一个项目添加到它弹出列表上的currentMyItems等,当我尝试删除ListBox中的选定项目时会出现问题.这是我使用的代码:

currentMyItems.Remove((MyItem)listMyItems.SelectedItem);
Run Code Online (Sandbox Code Playgroud)

该项目从ListBox中消失,但下次更新时,它会弹回,因为它从未被删除.有小费吗?

c# wpf binding listbox itemssource

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