「ストーリー」全体は、XAML ですべてを構成できるようにするためのものです。パラメーター (Application クラスの変数) を ObjectDataProvider(ODP) メソッドに渡そうとしています。アイデアは、マークアップ拡張機能を使用することでした。これで実行時にすべてが完璧に機能し、拡張機能は ODP に対してこのパラメーターを返します。設計時には機能しませんでした。マークアップ拡張機能は設計時に使用できませんか? それらが設計時間どおりに呼び出されているかどうかを確認する方法はありますか?
拡大:
namespace ZApplication
{
public class ZAppExtension : MarkupExtension
{
public ZAppExtension() { }
public override object ProvideValue(IServiceProvider serviceProvider)
{
MessageBox.Show("ProvideValue called");
return @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=TermineDB;Integrated Security=True;Persist Security Info=True";
}
}
}
XAML ObjectDataProvider:
<ObjectDataProvider x:Key="objKalender"
MethodName="GetKalender"
ObjectType="{x:Type zzzDataLayer:TermineAPI}">
<ObjectDataProvider.MethodParameters>
<z:ZAppExtension></z:ZAppExtension>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
設計時に機能しなかったバインディング:
<ListBox x:Name="listBox" Height="129" Margin="19,0,18,37" VerticalAlignment="Bottom"
ItemsSource="{Binding Mode=OneWay, Source={StaticResource objKalender}}"
DisplayMemberPath="Beschreibung" SelectedValuePath="Id"
SelectedIndex="2" SelectedValue="{Binding PrimaryCalendarId}" BorderThickness="1"/>
拡張機能が機能することを証明します。
<TextBlock x:Name="textBlock1" HorizontalAlignment="Right" Margin="0,210,42,190" TextWrapping="Wrap" Text="{z:ZApp}" Width="247"/>
設計時にマークアップが許可されていない/何らかの形で無効になっている場合、変数を MethodParameter に渡す方法は何ですか?
どんな助けでも大歓迎です。
GetKalender を追加するための編集:
public static IEnumerable<Kalender> GetKalender(String strConnectionString=null)
{
zEntityContext.zDataContext dc;
if (String.IsNullOrEmpty(strConnectionString))
dc = new zEntityContext.zDataContext();
else
dc = new zEntityContext.zDataContext(strConnectionString);
return dc.Kalendere.Select(kalender => new Kalender(kalender, dc));
}
ListBoxのバインディングでDynamicResourceをStaticResourceに変更するために編集。