2

クラスの特定のインスタンスをページのリソースに追加し、そのクラスをコンバーターとして使用したいので、ページ コンストラクターに次のように記述します。

this.Resources.Add("converterASD", new ASDConverter());

次に、次のようにバインドします。

<ListBox ItemsSource="{Binding Converter={StaticResource converterASD}}"/>

しかし、私はこの例外を受け取り続けています:

「System.Windows.Markup.StaticResourceHolder」に値を指定すると、例外がスローされました。

私はWPFに少し慣れていないので、アドバイスをいただければ幸いです。

4

2 に答える 2

3

例外からのより多くの情報を使用できます。

2 つの提案:

  1. InitializeComponent() を呼び出す前に、必ずリソースを追加してください。
  2. 動的リソースに切り替えてみてください。
于 2013-02-25T18:55:45.323 に答える
0

次の例のように、ページのリソース セクションで使用するコンバーターを宣言できます。(コード ビハインドではなく、XAML でコンバーターを宣言することをお勧めします)

例:

<UserControl x:Class="Views.ConverterExample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300"
        d:DesignWidth="300">
    <UserControl.Resources>
        <BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
    </UserControl.Resources>
    <Grid>
        <CheckBox x:Name="VisibilityController" IsThreeState="False" />
        <ListBox
            Visibility="{Binding ElementName=VisibilityController, Path=IsChecked,Converter={StaticResource BoolToVisibilityConverter}}"
            Height="100" Width="100" BorderBrush="Red" BorderThickness="1" />
    </Grid>
</UserControl>
于 2013-02-25T19:25:24.510 に答える