0

.Net Core 3.1 で空の WPF アプリケーションを作成し、MahApps Metro パッケージ 2.0.0 を追加しました。シンプルな SplitButton を追加し、シンプルな ViewModel を実装して、SplitButton にアイテムを表示しました。これはうまくいきます。

分割ボタンの XAML コード:

<MahApps:SplitButton Style="{DynamicResource SplitButtonStyle}" 
                Name="BrowserList"
                MinWidth="80"
                BorderThickness="1"
                BorderBrush="LightGray"
                MinHeight="31"
                Width="120"
                Margin="5,0,0,0"
                ItemsSource="{Binding BrowsersAll, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                IsEnabled="true" >

                <MahApps:SplitButton.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
                                <TextBlock Margin="5,0,0,0" Text="{Binding FullName}"  VerticalAlignment="Center" />
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </MahApps:SplitButton.ItemTemplate>
            </MahApps:SplitButton>

メイン ウィンドウのモデル:

public partial class MainWindow : MetroWindow
{
    public Model data;
    public MainWindow()
    {
        InitializeComponent();
        data = new Model();
        data.BrowsersAll.Add(new Browser() { FullName = "one" } );
        data.BrowsersAll.Add(new Browser() { FullName = "two" } );
        data.BrowsersAll.Add(new Browser() { FullName = "three" } );
        this.DataContext = data;

    }
}

ただし、テンプレートに変更を加えずにテンプレートのコピーを編集しようとすると、エラーが表示されます。

   at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at WpfApp8splitb.MainWindow.InitializeComponent() in C:\Projects\test\core\WpfApp8splitb\WpfApp8splitb\MainWindow.xaml:line 1

そして、ここに例外エラーがあります:

ArgumentException: Must have non-null value for 'Setter.Property'.

完全なソリューション ファイルへのリンク (25.5Kb):

https://easyupload.io/xoh43p

4

1 に答える 1