私はカスタムクラスを持っています。クラスを静的リソースとして宣言しない限り、依存関係プロパティはバインディングでは機能しません。 私のXAML:静的リソースとしない限り、依存関係プロパティのバインディングはクラスに対して機能しません
<sdk:Frame prism:RegionManager.RegionName="MainContentRegion">
<sdk:Frame.ContentLoader>
<myLibrary:RegionNavigationContentLoader
RegionManager="{Binding RegionManager}"
RegionName="MainContentRegion" />
</sdk:Frame.ContentLoader>
</sdk:Frame>
マイカスタムローダークラス:
public class RegionNavigationContentLoader : FrameworkElement, INavigationContentLoader
{
public static readonly DependencyProperty RegionManagerProperty = DependencyProperty.Register("RegionManager", typeof(IRegionManager), typeof(RegionNavigationContentLoader), new PropertyMetadata(null));
public IRegionManager RegionManager {
get { return (IRegionManager)GetValue(RegionManagerProperty); }
set { SetValue(RegionManagerProperty, value); }
}
public static readonly DependencyProperty RegionNameProperty = DependencyProperty.Register("RegionName", typeof(string), typeof(RegionNavigationContentLoader), new PropertyMetadata(null));
public string RegionName {
get { return (string)GetValue(RegionNameProperty); }
set { SetValue(RegionNameProperty, value); }
}
...
}
私は資源としてローダを宣言して、フレームに結合staticresourceとしてそれを渡すときには、しかし、正常に動作しません。
<Grid.Resources>
<myLibrary:RegionNavigationContentLoader x:Key="RegionLoader"
RegionManager="{Binding RegionManager}"
RegionName="MainContentRegion" />
</Grid.Resources>
<sdk:Frame prism:RegionManager.RegionName="MainContentRegion"
ContentLoader="{StaticResource RegionLoader}"/>
これは大きな問題ではありませんが、私はその理由を知りたいと思います。誰でも知っていますか?
「うまくいかない」とはどういう意味ですか?デバッガの下で実行すると、バインディングエラーが出力ウィンドウに表示されますか? –
Joe - バインディングエラーは報告されていませんでした。私のプロパティの設定者は、私がデバッガでそれらを踏んだときにヒットしませんでした。 – Adam
アダムは、動作してもセッターはとにかくヒットしないことに注意してください。バインディングは、標準の.NETプロパティーセッターを迂回して、 'SetValue'を介してDependencyプロパティーに値を割り当てます。 – AnthonyWJones