2017-05-16 11 views
0

ExpressionBlendに素敵なボタンを作成しました。うまく動作し、背景色などの依存プロパティをいくつか持っています。デザイン時に透明なWPFコントロール

Visual Studioでプロジェクトを作成し、dllをインポートし、ツールボックスにUserControlをドラッグして、ページにドラッグすると、trasnparent squareが表示されます。私は、エディタ内のすべてのプロパティを設定することができ ..それがなぜ起こるかできる任意の手掛かりを私もアプリケーションを実行することができますし、私のユーザーコントロールは

しかし、それは、デザイナーのために動作しません正しくすべての色を示すありますか?

私はいくつかのソースを追加することができますが...非常に単純なものです。..

注:ユーザーコントロールのDLLはAnyCPUのターゲットプラットフォームに対してコンパイル、およびアプリケーションは、x64用です。

public partial class InteractiveRisedButton : UserControl 
{ 
    public event EventHandler g_Clicked; 


    public string ButtonBackground 
    { 
     get { return (string)GetValue(ButtonBackgroundProperty); } 
     set { SetValue(ButtonBackgroundProperty, value); } 
    } 
    public string InnerTextContent 
    { 
     get { return (string)GetValue(InnerTextProperty); } 
     set { SetValue(InnerTextProperty, value); } 
    } 
    public static readonly DependencyProperty ButtonBackgroundProperty = 
     DependencyProperty.Register("ButtonBackground", typeof(string), typeof(InteractiveRisedButton)); 

    public static readonly DependencyProperty InnerTextProperty = 
     DependencyProperty.Register("InnerTextContent", typeof(string), typeof(InteractiveRisedButton)); 

    public InteractiveRisedButton() 
    { 
     InitializeComponent(); 
    } 
} 

XAML::私はドラッグ&ドロップを使用して、それを埋め込むホストプロジェクトで

<UserControl x:Name="InterRisedButton" x:Class="gMaterialWPF.InteractiveRisedButton"> 
<UserControl.Resources> 
    <Style x:Key="InteractiveRisedButtonStyle" 
     ... lots of stuff here 
     Background color is binded here like: 
     <Border x:Name="area" Cursor="Hand" Background="{Binding ButtonBackground, ElementName=InterRisedButton}" BorderThickness="0"> 
</UserControl.Resources> 
<Grid> 
    <Button x:Name="button" Content="{Binding InnerTextContent, ElementName=InterRisedButton}" Margin="0" Style="{DynamicResource InteractiveRisedButtonStyle}" Click="button_Click"/> 

</Grid> 

、それが終わる4.6.1 .NetFW

いくつかのコードに基づいて、すべての

<page 
    xmlns:gMaterialWPF="clr-namespace:gMaterialWPF;assembly=gMaterialWPF" 
> 

<gMaterialWPF:InteractiveRisedButton Foreground="Red" ButtonBackground="Green" InnerTextContent="HOLA!" Height="100" Margin="0,50,0,20" ClipToBounds="False"/> 

</page> 

これは私がエディタで見たものである。

enter image description here

これは私が実行中のアプリケーションで見たものである。

enter image description here

答えて

0

これはあなたのコードを知らなくても答えることは困難です。あなたのコントロールが公開されているデフォルトのコンストラクタを持っていることを確認して、 InitializeComponent() が存在するかどうかを確認してください。さらに、環境を確認してください。新しい(テスト)プロジェクト内で試してみてください。

コードの一部を再現しようとしましたが、私にとっては以下のように動作しました。

  • ボタンを編集するときにボタンの内容が表示されません(この段階でコンテナがバインドされていないためです)。
  • HOLA!実行時にコンテナウィンドウのxamlを編集するときに表示されます。

私が言うことができるのは、拘束力のある問題です。 FallbackValueを使用すると、

Content="{Binding InnerTextContent, ElementName=InterRisedButton, FallbackValue='Tambien hola!'}" 

を得ることができます。バインディングが失敗した場合や、特定の段階でまだ発生しなかった場合。

+0

ヒントのおかげで、コンストラクタとinitializeComponentsがあります。私はそれがなくてもアプリケーションを実行しても動作しないと思います。 – javirs

+0

バインディングを削除してテキストをハードコードしましたが、同じ動作があります。背景色、枠線、影、何もないことに注意してください。テキストだけではない – javirs