MVVM-Light ToolkitでSL4を使用しています。私はここで何が起こっているのか分かりません。私はこの問題を解決するWeb上で何かを見つけることができないようです。標準のxmlns:local = "clr-namespace:WorkOrder.Views"構文を使用して、私のMainPage.xamlに組み込むユーザコントロールがあります。ローカル:ListWorkOrdersViewをさらに下に移動します。 RelayCommandを使用して、「List Work Orders」ボタンをクリックすると、そのListWorkOrdersViewウィンドウにアニメーションが表示されます。問題のバインディングViewModelのSelectedItem - MVVM Light Silverlight 4
私はListWorkOrdersViewのデータをObservableCollectionのテストデータ(結合性のため)にバインドしました。私がしたいのは、そのRadGridViewのSelectedItemをViewModelのプロパティにバインドすることです。 SelectedWOプロパティのゲッターにブレークポイントを置くと、コントロールをロードすると起動しますが、ブレーターポイントをセッターに移動するとブレークポイントはヒットしません。関連するコード:
ListWorkOrdersView.xaml
<UserControl xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
x:Class="WorkOrder.Views.ListWorkOrdersView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:GalaSoft_MvvmLight_Command="clr-namespace:GalaSoft.MvvmLight.Command;
assembly=GalaSoft.MvvmLight.Extras.SL4"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
mc:Ignorable="d"
DataContext="{Binding ListWorkOrders, Source={StaticResource Locator}}">
<Grid x:Name="master"
DataContext="{Binding ListWorkOrders, Source={StaticResource Locator}}">
<telerik:RadGridView x:Name="gvListWO" IsReadOnly="True"
AutoGenerateColumns="False" DataContext="{Binding wo}"
SelectedItem="{Binding ElementName=master,
Path=DataContext.SelectedWO, Mode=TwoWay}"
Grid.ColumnSpan="2"
Width="440"
Height="330"
ItemsSource="{Binding}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding WORK_ORDER_NUMBER}"
Header="Work Order Number"/>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding PROPOSED_BY}" Header="Proposed By"/>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding DATE_PROPOSED}" Header="Date Proposed"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</Grid>
</UserControl>
関連ListWorkOrdersViewModel.cs
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using GalaSoft.MvvmLight.Messaging;
using WorkOrder.Model;
using System.Collections.ObjectModel;
using System.Collections.Generic;
using System;
namespace WorkOrder.ViewModel
{
public class ListWorkOrdersViewModel : ViewModelBase
{
public const string SelectedWOPropertyName = "SelectedWO";
private ObservableCollection<BWorkOrder> _selectedWO;
public ObservableCollection<BWorkOrder> SelectedWO
{
get
{
return _selectedWO;
}
set
{
if (_selectedWO == value) return;
_selectedWO = value;
RaisePropertyChanged(SelectedWOPropertyName);
}
}
}
}
なぜこれが適切に結合されていない上の任意のアイデア(GridViewコントロール自体をデータバインディングのための削除コード)?私は完全に迷っています!
childwindowのdatacontextとグリッドのdataconextの両方をviewmodelにバインドすることはありません。 usercontrolのdatacontextをデータバインドすると、そのusercontrol内のすべてのコントロールに移動します。 あなたの問題については、あなたがtelerikを使って以来、私は本当にあなたを助けることができません。 –
ええ、私はこれを理解しようとしていたので、datacontextで遊んでいました。私はこれを投稿したときに私はまだそれを持っていたことを理解していませんでした。私の悪い。 –