2

AvalonDock の LayoutItemTempate にバインドされた ViewModel の Observable Collection があります。ユーザーが取得したリストから問題を開くと、監視可能なコレクションに新しい ViewModel が作成されます。その結果、新しいドキュメントが作成されますが、これは新しく、コレクションの ViewModel を使用していません。

コンバーターを使ってみたのですが、全然コンバーターを使っていないようです。誰かが代替案を知っていますか? おそらく、コード ビハインド ソリューションでさえありますか?

メインの XAML スニペットを次に示します。. .

 <Window.Resources>
    <pconv:IProblemInfoToFreeResponseVMConverter x:Key="FreeResponseToVM" />
</Window.Resources>
. . . { some lines down } . .  .
<dock:DockingManager.LayoutItemTemplateSelector>
    <selector:LayoutItem>
        <selector:LayoutItem.ProblemEditViewTemplate>
            <DataTemplate>
                <problem:FreeResponseEdit 
                    DataContext="{Binding SelectedProblem,
                        Converter={StaticResource FreeResponseToVM}}" />
            </DataTemplate>
        </selector:LayoutItem.ProblemEditViewTemplate>
    </selector:LayoutItem>
</dock:DockingManager.LayoutItemTemplateSelector>

私のコンバーターコード。. .

[ValueConversion(typeof(FreeResponse), typeof(FreeResponseEditViewModel))]
public class IProblemInfoToFreeResponseVMConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is FreeResponse)
            return new FreeResponseEditViewModel(value as FreeResponse);
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is FreeResponseEditViewModel)
            return (value as FreeResponseEditViewModel).ProblemItem;
        return value;
    }
}
4

1 に答える 1

2

ItemSourceFreeResponseEditViewModel のスタックにバインドするFreeResponseEditと、DataTemplate は を作成FreeResponseEditViewModelし、DataContext としてビューに自動的に挿入します。

<dock:DockingManager.LayoutItemTemplateSelector>
    <selector:LayoutItem>
        <selector:LayoutItem.ProblemEditViewTemplate>
            <DataTemplate>
                <problem:FreeResponseEdit /> 
            </DataTemplate>
        </selector:LayoutItem.ProblemEditViewTemplate>
    </selector:LayoutItem>
</dock:DockingManager.LayoutItemTemplateSelector>

DataContext一切省略。

于 2013-08-20T19:48:11.133 に答える