小编man*_*ton的帖子

绑定datagrid列宽

我有两个datagrids,每个都有一列.第一:

<DataGrid.Columns>
   <DataGridTextColumn x:Name="FilterTextCol01" 
                       IsReadOnly="False" 
                       Width="{Binding ElementName=TextCol01, Path=ActualWidth, Mode=TwoWay}" />
</DataGrid.Columns>
Run Code Online (Sandbox Code Playgroud)

第二:

<DataGridTextColumn CellStyle="{StaticResource DataGridColumnContentLeft}"
                    local:DataGridUtil.Name="TextCol01"
                    x:Name="TextCol01"
                    Header="TextCol01"
                    SortMemberPath="TextCol01"
                    Binding="{Binding TextCol01}" 
                    Width="Auto" 
                    IsReadOnly="True"/>
Run Code Online (Sandbox Code Playgroud)

第一列的宽度与第二列的宽度的绑定不起作用.如果我在代码中这样做:

FilterTextCol01.Width = TextCol01.ActualWidth;
Run Code Online (Sandbox Code Playgroud)

有用.谁能告诉我为什么第一种方法不起作用?

c# data-binding wpf xaml datagrid

10
推荐指数
1
解决办法
8853
查看次数

将选定的日历日期显示在视图中

我通过代码 (C#) 选择日历 (wpf) 的日期(不是当前日期)。现在我想将这个选定的日期显示出来。我该如何解决这个问题?始终显示当前日期。

有什么想法吗?谢谢你!

wpf calendar

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

c# tpl, continuewith 的问题“调用线程无法访问对象,因为不同的线程拥有它”

我正在运行 Visual Studion 2010 (Net 4.0),我正在创建一个任务,将一些值加载到 ObservableCollection 中,然后返回到 UI。这是代码:

LoadValues = Task.Factory.StartNew<ObservableCollection<DataGridEntity>>(curDataLoader.LoadValuesTask);
ItemsList = LoadValues.Result;
this.DataContext = ItemsList;
Run Code Online (Sandbox Code Playgroud)

这段代码运行得很好!但使用 .Result 属性,UI 线程会等待,直到 LoadValues 任务返回。所以我想这样做:

LoadValues = Task.Factory.StartNew<ObservableCollection<DataGridEntity>>(curDataLoader.LoadValuesTask);
LoadValues.ContinueWith((FinishLoadDataToDataGrid1) =>
{
   ItemsList = LoadValues.Result;
   this.DataContext = ItemsList;
});
Run Code Online (Sandbox Code Playgroud)

差别很小。我使用ContinueWith 来防止UI 线程等待。但如果我这样做,他告诉我:“调用线程无法访问对象,因为不同的线程拥有它”在“this.DataContext = ItemsList;”

是不是时间问题?有人有什么想法吗?

visual-studio-2010 task-parallel-library

0
推荐指数
1
解决办法
1298
查看次数