小编Jor*_*enH的帖子

MVVM WPF ComboBox SelectedItem绑定未在datagrid中激活

在数据网格内部操作时,我一直在努力保存我的组合框选择值.当我制作一个没有数据网格的测试解决方案时,一切正常.上下文是与相关国家/地区的人名.这些国家/地区存储在xml文件中.以下是初始视图的快照:

Combobox与国名

你在这里看到PersonList.xaml的(重要部分):

<UserControl.Resources>
        <XmlDataProvider x:Key="Dataxml" Source="\Properties\AllCountries.xml" />
        <model:Person x:Key="Person"/>
    </UserControl.Resources>
    <UserControl.DataContext>
        <viewModel:PersonListViewModel />
    </UserControl.DataContext>

<DataGrid ItemsSource="{Binding Persons}" AutoGenerateColumns="False" IsReadOnly="False" CanUserAddRows="False" SelectionUnit="FullRow" SelectedItem="{Binding SelectedPerson}" >
                        <DataGrid.Columns>
                            <DataGridTextColumn Header="Name" Binding="{Binding Name}" CanUserSort="true" ></DataGridTextColumn>
                            <DataGridTemplateColumn Header="Country">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <ComboBox
                                                Width="150"
                                                SelectedValuePath="country"
                                                IsSynchronizedWithCurrentItem="True"
                                                ItemsSource="{Binding Source={StaticResource Dataxml}, XPath=/countries/country}"
                                                SelectedIndex="{Binding CountryIndex}"
                                                SelectedItem="{Binding Path=XmlCountry, Mode=TwoWay}">
                                            <ComboBox.ItemTemplate>
                                                <DataTemplate>
                                                    <TextBlock>
                                                        <TextBlock.Text>
                                                            <MultiBinding StringFormat="{}{0}, {1}">
                                                                <Binding XPath="name" />
                                                                <Binding XPath="iso" />
                                                            </MultiBinding>
                                                        </TextBlock.Text>
                                                    </TextBlock>
                                                </DataTemplate>
                                            </ComboBox.ItemTemplate>
                                        </ComboBox>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                        </DataGrid.Columns>
                    </DataGrid>
Run Code Online (Sandbox Code Playgroud)

此网格由PersonListViewModel填充,PersonListViewModel具有ObservableCollection<Person> _persons实现INotifyPropertyChanged 的私有属性,并且是网格的ItemsSource.你也看到SelectedItem="{Binding SelectedPerson}"了网格中的内容.那部分工作正常. …

wpf binding datagrid combobox mvvm

11
推荐指数
1
解决办法
7089
查看次数

WPF MVVM等待:取消任务不会停止我的进度条

我正在开发一个 .NET 4.5 小型 WPF/MVVM 项目,并且我正在尝试让进度条与 async/await 一起正确工作。

我已经一切正常,但无法正确取消任务。或者,我认为任务可能被取消,但进度条无论如何都会运行完整长度。

我在“开始”和“停止”上调用“LongRun”方法,但当我想停止时使用可选的取消令牌参数。这可能是一种不寻常的做事方式,但我认为它看起来不错 - 至少在理论上:-)

这是一些代码:

视图模型

public MainViewModel()
    {
        _progress = new Progress<int>(ReportProgress);
        CountFilesCreatedCommand = new RelayCommand<IProgress<int>>(progress => LongRun(Progress));
        _tokenSource = new CancellationTokenSource();
        _tokenSource.Cancel();
        StopCountFilesCommand = new RelayCommand<CancellationToken>(token => LongRun(Progress, _tokenSource.Token));
        ProgressText = "...";
    }

    private void ReportProgress(int result)
    {
        PercentProgress = result;
    }

    private async void LongRun(IProgress<int> progress, CancellationToken token = default(CancellationToken))
    {
        try
        {
            // Start long running task here
            int i = 0;
            for (; i != 101; ++i) …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm async-await

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

标签 统计

mvvm ×2

wpf ×2

async-await ×1

binding ×1

c# ×1

combobox ×1

datagrid ×1