2016-11-18 13 views
0

私はMainWindowに簡単なusercontrolを持っています。私は簡単にprotableです簡単なウィンドウテンプレートを作成しようとしています。私はusercontrolを持っていますこれはこれまでのところ私の目的を果たしているようです...ちょっと...UserControlのWindowStyleとAllowTransparencyを設定する

私はAllowControlsとWindowStyleをusercontrolに設定すると、プロジェクトは正常にコンパイルされますが、コントロールのMainWindowではObject Not Setインスタンスに...コントロール全体に下線が引かれています。私がMainWindowを設定した場合は、すべていいです。私はこれで生きることができますが、望む結果は生きられません。

XAML

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:cntl="clr-namespace:Rtg" 

    Title="MainWindow" Height="400" Width="525"> 
    <!-- if I add windowstyle and allowtransparency here all good --> 
    <Grid> 

     <cntl:test1 WinTitle="test window framing"> 
      <cntl:test1.PlaceHolder1> 
       <Grid Background="Orange"> 
        <TextBox BorderBrush="Transparent" Text="Content in placehoder:" Height="35" Width="175" Margin="0,10,270,0" Background="Transparent" FontSize="16" ></TextBox> 
        <Button Width="100" Height="35" Content="click me" FontSize="16"></Button> 
       </Grid> 
      </cntl:test1.PlaceHolder1> 
     </cntl:test1> 
    </Grid> 
</Window> 

C#

public test1() { 
     Window win = Application.Current.MainWindow; 
     win.WindowStyle = System.Windows.WindowStyle.None; 
     win.AllowsTransparency = true; 
     InitializeComponent(); 
     ctrTest2.Title = WinTitle; 
    } 

はウェブWPFはややかなり新しい私にある最後の15年間開発してき。

これはWPFの通常の動作ですか? これはどこかにありますか?これで、私はusercotrolのウィンドウのプロパティを設定できますか?

答えて

0
public test1() { 
     InitializeComponent(); 
     ctrTest2.Title = WinTitle; 
     //Need to do it after Initialization 
     Window win = Application.Current.MainWindow; 
     win.WindowStyle = System.Windows.WindowStyle.None; 
     win.AllowsTransparency = true; 
    } 

それはViewModelにを作成し、プロパティ

public class MainViewModel : INotifiyPropertyChanged{ 

    private WindowStyle _windowStyle; 

    public WindowStyle WinStyle { 
    get{ 
    return _windowStyle; 
     } 
    set{ 
    _windowStyle = value;OnPropertyChanged("WinStyle"); 
    } 
    } 
} 

そして、XAMLで

WindowStyle="{Binding Path=WinStyle}" 
+0

前後は関係ありません。私は同じエラーが発生します。 MainWindowがnullだった場合にのみ問題になると思います。しかし、コンストラクタは既に呼び出されており、MainWindowはInitializingのプロセス中です。 – Mike

+0

それは本当に奇妙です、私は実際にデモプロジェクトを作成し、試して、それは私のために正常に働いた。たぶんviewmodelでそれを試してプロパティとしてバインドしてください。 –

0

をバインドすることであろう処理するより、 "WPF" の方法は、エラーを検出しました。私はどのウィンドウがロードされているかを知るために、私の関数の1つをintに送り出していました。アプリケーションが実行されていないときにウィンドウや変数が初期化されないため、Visual Studioは整数が配列の範囲外にあると判断しました。上記のコードを単純なif文で追加すると、すべての問題が修正されました。ピギーピギーWPF。

ケビン、私はあなたがビューモデルの意味を不明でした。私の場合、xaml.csまたはUserControlを読んだ後、ViewModelは正しいでしょうか?

ここは私の修正です。

if (LoadingWindow > -1 && Application.Current.Windows.Count > LoadingWindow) { 

    // Load Window 

} 
関連する問題