なぜこれは機能しませんか?Silverlightデフォルトのコンテンツプレゼンターのコンテンツ
その後、コントロールテンプレートでカスタムコントロールに適用されるスタイルで
...
<Setter Property="ChromeContent">
<Setter.Value>
<Grid />
</Setter.Value>
</Setter>
...:カスタムコントロールのgeneric.xamlで
...
<ContentPresenter Grid.Column="0"
x:Name="ChromeContentPresenter"
Content="{TemplateBinding ChromeContent}" />
ChromeContentのperty ...
public Object ChromeContent
{
get { return (Object)GetValue(ChromeContentProperty); }
set { SetValue(ChromeContentProperty, value); }
}
public static readonly DependencyProperty ChromeContentProperty =
DependencyProperty.Register("ChromeContent", typeof(Object),
typeof(casPopup), null);
ご覧のとおり、任意のオブジェクトが必要です。私はグリッドに変更しようとしましたが、それは助けになりませんでした。ただ_Failedプロパティに割り当てる「System.Windows.Controls.ContentPresenter.Content」
私はセッターからグリッドを削除する場合は奇妙なことに、以下が正常に動作しますND:
それは(ジャバスクリプトから)このエラーがスローされます私は苦労のアンダーを抱えている
Grid g = new Grid();
g.Width = 100;
g.Height = 25;
g.Background = new SolidColorBrush(Colors.LightGray);
ChromeContent = g;
:
<Setter Property="ChromeContent" Value="DEFAULT" />
また、これはコントロールクラスでOnApplyTemplateメソッドからあまりにも動作します:テキストを使用generic.xamlで定義されているグリッドのデフォルトのコンテンツが動作しないようにしています。誰もこの問題について知識がありますか?
ご協力いただきありがとうございます。
<Setter Property="ChromeContent">
<Setter.Value>
<Grid />
</Setter.Value>
</Setter>
あなたはリソースディクショナリまたはスタイルの値として直接UIElement
を含めるべきではありません - :
非常に興味深いです。私はこれを知らなかった。もし私が次のような質問をしたら、私はコントロールテンプレートでこれをどうやってやるのだろうか? ContentPresenterにデフォルトのマークアップを配置しようとすると、グリッドなどを追加できません。ユーザーのコンテンツが提供された場合、私のコンテンツを上書きするようにしたいので、ここからどこに行くのかは分かりません。 – maulkye
手伝ってくれてどうもありがとう! – maulkye