2012-07-20 39 views
0

我在名爲HPanel.xaml這樣文件中定義一個StackPanel:取向屬性定義爲忽略在單獨的XAML文件頂層組分

<StackPanel Orientation="Horizontal" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" /> 

然後,使用HPanel這樣的:

<v:HPanel> 
    <Label Content="The label" /> 
    <TextBox Text="{Binding transporter.Foo, 
    UpdateSourceTrigger=PropertyChanged}" /> 
</v:HPanel> 

會給我一個垂直方向而不是水平方向的堆疊面板。

爲什麼?

+0

我看不到這種行爲的明顯原因。你能發佈更多的代碼嗎?就像你如何包含你的文件(資源字典等等)以及你的HPanel.xaml類的完整代碼(如果可能的話) – David 2012-07-20 14:01:34

+0

HPanel.xaml只包含該行。將HPanel作爲子項的控件沒有資源字典。 generic.xaml中沒有提到Stackpanel。 HPanel在另一個StackPanel內。如果我將上面的參數( etc ...)更改爲StackPanel並且方向=「水平」,則方向將是正確的。 – 2012-07-20 14:24:38

+1

這裏缺少一些東西......「HPanel.xaml只包含那一行」<<這對我來說似乎是不可能的:在的某個地方你需要一個{x:Class =「HPanel」}來編譯而不會出錯。你真的不能發佈HPanel.xaml文件的*全部*內容嗎?與xmls:x ....東西?我有一個感覺,問題在於代碼 – David 2012-07-20 15:04:25

回答

0

Tada!

我已經做了一個工作測試用例,如果我有一個代碼,stackpanel會變得很好。要處理的屬性需要InitializeComponent。

MainWindow.xaml:

<Window x:Class="wpftestapp.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:v="clr-namespace:wpftestapp.views" 
    Title="MainWindow" Height="350" Width="525"> 
    <v:HPanel> 
     <Label Content="a"/> 
     <Label Content="b"/> 
     <Label Content="c"/> 
    </v:HPanel> 
</Window> 

HPanel.xaml:

<StackPanel Orientation="Horizontal" 
    x:Class="wpftestapp.views.HPanel" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"/> 

HPanel.xaml.cs:

using System.Windows.Controls; 

namespace wpftestapp.views 
{ 
    public partial class HPanel : StackPanel 
    { 
    public HPanel() 
    { 
     InitializeComponent(); 
    } 
    } 
} 

感謝您的幫助!

+1

啊是的,這將解釋它的確。所以我最後很想知道更多關於HPanel的課程^^很高興它幫助你理清了事情。 – David 2012-07-20 15:48:14