1

Microsoft Office と同じスタイルのシンプルなメニューを作成しようとしています。

スクリーンショットの例
(ソース: techairlines.com )

ListBoxメニューとして aを試してみましたが、各リストボックス項目を別のパネルにバインドできないようです。これを行う簡単な方法はありますか?誰かがいくつかの指針を示したり、いくつかのチュートリアルを教えてくれたりすると、とても感謝しています. ネットであちこち検索したような気がします。


いくつか問題があります。c# で Silvermind のコードを使用し、イベントを追加しました。

    [ContentProperty("Content")]
public class ModelForMyListBox : INotifyPropertyChanged
{
    private string title;
    private object content;
    public string Title
    {
        get { return title; }
        set
        {
            if (value == title)
                return;
            title = value;
            OnPropertyChanged("Title");
        }
    }
    public object Content
    {
        get { return content; }
        set
        {
            if (value == content)
                return;
            content = value;
            OnPropertyChanged("Content");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

XAML では、これを追加するとエラーが発生します。

xmlns:controls="clr-namespace:WpfApplication1.Controls"

「WpfApplication1.Controls」はアセンブリに含まれていません

XAMLの残りの部分については、コントロールを使用するとエラーが発生しますが、上記のエラーが原因だと思います。

最後の修正を手伝っていただけませんか?

4

1 に答える 1

0

最も簡単な方法は次のようになります。

[ContentProperty("Content")]
public class ModelForMyListBox : INotifyPropertyChanged
{
    private string title;
    private object content;
    public string Title
    {
        get { return title; }
        set
        {
            if (value == title)
                return;
            title = value;
            OnPropertyChanged("Title");
        }
    }
    public object Content
    {
        get { return content; }
        set
        {
            if (value == content)
                return;
            content = value;
            OnPropertyChanged("Content");
        }
    }
}

ModelForMyListBoxの名前空間に、ウィンドウ内のコントロールのようなプレフィックスまたはユーザーコントロールのようなプレフィックスを追加します。xmlns:controls="clr-namespace:Application1.Controls"

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <ListBox x:Name="MenuListBox" DisplayMemberPath="Title">
        <controls:ModelForMyListBox Title="Share">
            <!-- <MyCustomViewObject here -->
        </controls:ModelForMyListBox>
        <controls:ModelForMyListBox Title="Help">
            <!-- <MyCustomViewObject here -->
        </controls:ModelForMyListBox>
    </ListBox>
    <ContentPresenter Grid.Column="1" 
                      DataContext="{Binding ElementName=MenuListBox, Path=SelectedItem}"
                      Content="{Binding Path=Content}"/>
<Grid>

これでうまくいくことを願っています。

于 2012-07-05T22:42:24.487 に答える