小编Yae*_*ael的帖子

WPF DataGrid中的自定义CheckBox不会更新绑定

我有以下(简化)风格:

<Style x:Key="MyStyle" TargetType="{x:Type CheckBox}">  
    <Setter Property="Background" Value="Blue" />  
</Style>
Run Code Online (Sandbox Code Playgroud)

如果我在DataGridCheckBoxColumn中将它用作ElementStyle AND EditingElementStyle:

<DataGridCheckBoxColumn Binding="{Binding IsEnabled}"  
                        ElementStyle="{StaticResource MyStyle}"  
                        EditingElementStyle="{StaticResource MyStyle}" />
Run Code Online (Sandbox Code Playgroud)

然后,IsEnabled当我选中/取消选中行的复选框时,我的绑定不会切换.如果我删除ElementStyle,EditingElementStyle或两者,那么绑定更新没有问题.为什么是这样?!

此外,我尝试使用以下代码解决此问题:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding IsEnabled}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在.

c# wpf binding datagrid

8
推荐指数
2
解决办法
7272
查看次数

带MVVM的WPF数据网格

我正在尝试将WPF中的数据网格绑定到我的ViewModel,以便它将更新对数据库的任何单元格更改,并允许用户删除行并添加新行.我有一部分工作,但无法找到ADD的ELEGANT解决方案并进行修改.这是xaml

<DataGrid AutoGenerateColumns="false" HorizontalAlignment="Left" Margin="26,41,0,0" Name="dataGrid1"   
              ItemsSource="{Binding Path=GetAllItems}" Height="200" VerticalAlignment="Top" Width="266" >
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=ItemListID}" Header="ID" Visibility="Hidden"/>
            <DataGridTextColumn Binding="{Binding Path=ItemName}" Header="Name" Width="4*" />
            <DataGridCheckBoxColumn Binding="{Binding Path=IsActive}" Header="Active" Width="*"  />
        </DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)

然后在我的视图模型方法中

private ObservableCollection< ItemsList> getAllItems()
{
    using (var context = new InspectorGeneralEntities())
    {
        var query = from I in context.ItemsLists
                    select I;

        var item = new ObservableCollection<ItemsList>(query.ToList());
        return item;
    }
}
Run Code Online (Sandbox Code Playgroud)

删除行或修改数据网格上的行不会流入数据库.

a)我需要在xaml代码中创建哪些其他绑定来检测这些事件

b)如何在视图模型中检测已删除的记录或已修改的项目,以便我可以更新datacontext(如果它不会自动更新).

c# wpf datagrid mvvm

8
推荐指数
1
解决办法
7953
查看次数

无法编辑我的DataGrid WPF Framework 4.5的单元格

我的ObservableCollection有三个项目,行在数据网格中始终显示.我无法将我的DataGrid的单个单元格转换为编辑模式.我尝试点击,点击,双击,F2,...,但整个行保持选中状态.如何让用户编辑数据网格.我在其他帖子中发现了类似的数据网格编辑问题,但没有人解决了我的问题.这是代码(WPF NetFramework 4.5).因此,只有第一列是不可编辑的(只读).

<DataGrid Name="myDataGrid" Grid.Row="2" AutoGenerateColumns="False" ItemsSource="{Binding}" IsReadOnly="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="name" IsReadOnly="True" Width="200"  >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Formulation" Width="100" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FormulationStr}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FormulationStr}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="volume Diff" Width="100" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding volumeDiff}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding volumeDiff}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

data-binding wpf xaml datagrid

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

WPF DataBinding ObservableCollection <T>到DataGrid

我正在尝试在单独的UserControl中创建DataGrid,其DataContext是T的List.

在后面的代码中,我创建一个List,填充列表,然后将其发送到UserControl的构造函数,在该构造函数上我有我正在尝试填充的DataGrid.

UserControl类如下.

public partial class QuotePreview : UserControl
{
    private static SelectionList  previewList = new SelectionList();

    public SelectionList PreviewList
    {
        get { return previewList; }
    }

    public QuotePreview()
    {
        InitializeComponent();
    }

    public QuotePreview(SelectionList selectedOptions)
    {
        InitializeComponent();

        previewList = selectedOptions;

        QuotePreviewDataGrid.DataContext = previewList;
    }
}
Run Code Online (Sandbox Code Playgroud)

而Xaml看起来像:

<DataGrid Name="QuotePreviewDataGrid"
          AutoGenerateColumns="False" 
          ItemsSource="{Binding}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Model Number" Binding="{Binding ModelNumber}"/>
        <DataGridTextColumn Header="Description" Binding="{Binding Description}"/>
        <DataGridTextColumn Header="List Price per Unit" Binding="{Binding Price}"/>
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

我也试过设置ItemSource

QuotePreviewDataGrid.ItemsSource = PreviewList;
Run Code Online (Sandbox Code Playgroud)

我也尝试过设置数据上下文和itemsource以及刷新:

QuotePreviewDataGrid.Items.Refresh();
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序的其余部分设置为列表框的数据绑定工作完美.在列表框中,我将itemsource设置为{Binding},将ListItems绑定设置为{Binding Property}.后面的代码中设置的列表框的datacontext.

我的数据网格以相同的方式设置,但由于某种原因,网格内部没有显示任何内容.

当我浏览调试器并观察信息流时,我可以看到正在创建T列表,SelectionsList并将其传递给数据网格所在的用户控件的构造函数.我可以看到DataContext确实正在设置并显示列表中的项目,但是当我回到我的应用程序并尝试查看数据网格时,它是空白的.

任何帮助将不胜感激.在过去的一天半里,我一直在试图解决这个问题.谢谢! …

c# data-binding wpf datagrid

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

如何在目录遍历中获取文件大小?

当我使用递归查看每个文件时,如何获取文件的大小?我收到了下一个错误:

project.exe已退出,代码为-1073741819

int dir_size(const QString _wantedDirPath)
{
    long int sizex = 0;
    QFileInfo str_info(_wantedDirPath);
    if (str_info.isDir())
    {
        QDir dir(_wantedDirPath);
        QStringList ext_list;
        dir.setFilter(QDir::Files | QDir::Dirs |  QDir::Hidden | QDir::NoSymLinks);
        QFileInfoList list = dir.entryInfoList();

        for(int i = 0; i < list.size(); ++i)
        {
            QFileInfo fileInfo = list.at(i);
            if ((fileInfo.fileName() != ".") && (fileInfo.fileName() != ".."))
            {
                sizex += (fileInfo.isDir()) ? this->dir_size(fileInfo.path()) : fileInfo.size():
                QApplication::processEvents();
            }
        } 
    } 

    return sizex;
}
Run Code Online (Sandbox Code Playgroud)

c++ qt

6
推荐指数
2
解决办法
4848
查看次数

将ObservableCollection绑定到wpf数据网格:网格保持为空

我想绑定ObservableCollection到wpf datagrid.我ObservableCollection不是空的,但是,我的数据网格保持空白:

public partial class Fenetre_EvtCode : Window
{
    ObservableCollection<EvtCode> glb_ObservableEvtCode;

    public Fenetre_EvtCode()
    {
        InitializeComponent();

        EvtCode myEvt = new EvtCode();
        glb_ObservableEvtCode   =   myEvt.GetAllEvtCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的xaml:

<DataGrid Foreground="Aqua" 
          Name="myDataGridEvtCode" 
          AutoGenerateColumns="True"  
          HorizontalAlignment="Stretch" 
          Margin="0,0,0,0" 
          VerticalAlignment="Stretch" 
          Height="453" 
          ItemsSource="{Binding glb_ObservableEvtCode}" />
Run Code Online (Sandbox Code Playgroud)

我再说一遍:我看了调试,我ObservableCollection不是空的.

有谁知道为什么ma datagrid保持空?

c# data-binding wpf datagrid observablecollection

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

WPF在DataGrid中绑定到DataContext

我有一些问题将datagrid组合框映射ItemsSource到主datacontext.这是一些显示问题的演示代码.

我的课程

public class MyData
{
    public string Name { get; set; }
    public string Priority { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个连接到数据上下文的类,它看起来像这样

public class myMV
{
    public ObservableCollection<MyData> MyItems { get; set; }

    public List<string> PriorityTypes
    {
        get { return new List<string> { "High", "Normal", "Low" }; }
    }

    public myMV()
    {
        this.MyItems = new ObservableCollection<MyData>
                       {
                           new MyData { Name = "item1", Priority = "Low" },
                           new MyData { Name = "item2", Priority = "Normal" },
                           new …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid combobox

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

DataGrid wpf MVVM 内的按钮

我在这个项目中关注 MVVM。

我有 WPF 数据网格,

ItemsSource(ItemsSource="{Binding Documents}")绑定到ObservableCollection<Document>,

SelectedItem(SelectedItem="{Binding CurrentDocument, Mode=TwoWay}")绑定到WorkQueueDocument,

我还使用交互触发器来捕获鼠标的双击 - 以便在新窗口中加载选定的文档。

<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseDoubleClick">
        <i:InvokeCommandAction Command="{Binding ShowViewerCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)

我已将数据网格的列定义/绑定到 WorkQueueDocument 类的相应属性。

<DataGrid.Columns>
    <DataGridTextColumn Width="Auto"
                            MinWidth="100"
                            Header="Name"                                                            
                            Binding="{Binding Name}">
        <DataGridTextColumn.ElementStyle>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Margin" Value="2,0,0,0" />
                <Setter Property="ToolTip" Value="{Binding Name}" />
            </Style>
        </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>

    <!-- Many Other Columns Here... -->
</DataGrid.Columns>

<DataGrid.ColumnHeaderStyle>
        <!-- I have various designer style's properties defined here -->
</DataGrid.ColumnHeaderStyle>
Run Code Online (Sandbox Code Playgroud)

我应该在用户选择网格中的行(文档)时加载文档 - 对于该 CurrentDocument 属性定义如下: …

c# wpf events datagrid mvvm

6
推荐指数
1
解决办法
8365
查看次数

MVVM Datagrid默认选择第一行但未突出显示

我有一个datagrid绑定到我的ViewModel上的集合.当窗口加载时,填充数据网格并设置SelectedItem.(我知道这是因为我有一个绑定到所选项目的详细视图.)但是该行未突出显示.如果我点击该行,它将突出显示并正常工作.

当默认选择时,如何使所选行突出显示?

<DataGrid IsSynchronizedWithCurrentItem="True" SelectionUnit="FullRow"  RowHeaderWidth="0"  VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible"  IsReadOnly="True" ItemsSource="{Binding Items}"  SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False">
    <DataGrid.Columns>                    
        <DataGridTextColumn Header="Run Date" Binding="{Binding Path=RunDate, StringFormat={}{0:MM-dd-yy HH:mm:ss} }"  />
        <DataGridTextColumn Header="Description" Binding="{Binding Description}" />
        <DataGridTextColumn Header="Duration" Binding="{Binding Duration}" />
        <DataGridTextColumn Header="Deviation" Binding="{Binding Deviation}" />
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid mvvm

6
推荐指数
1
解决办法
2605
查看次数

WPF ComboBox绑定ItemsSource

我是WPF的初学者,并试图将ComboBox的Items绑定到ObservableCollection

我用过这段代码:

XAML

<Window x:Class="comboBinding2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        DataContext="{Binding RelativeSource={RelativeSource Self}}"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ComboBox x:Name="cmbTest" ItemsSource="{Binding Path=cmbContent}" Width="200" VerticalAlignment="Center" HorizontalAlignment="Center" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

C#

public MainWindow()
{
    cmbTest.ItemsSource = cmbContent;
    cmbContent.Add("test 1");
    cmbContent.Add("test 2");

    InitializeComponent();
}

public ObservableCollection<string> cmbContent { get; set; }
Run Code Online (Sandbox Code Playgroud)

在我尝试调试之前,我没有在此代码上出现任何错误,它会抛出错误:

TargetInvocationError

PresentationFramework.dll中出现未处理的"System.Reflection.TargetInvocationException"类型异常

谁能告诉我我做错了什么?

c# wpf xaml binding combobox

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

标签 统计

wpf ×9

c# ×8

datagrid ×8

xaml ×4

data-binding ×3

mvvm ×3

binding ×2

combobox ×2

c++ ×1

events ×1

observablecollection ×1

qt ×1