2013-02-28 53 views
-1

我想在一個函數(比如一個事件)中創建一個WinRT對象(比如說一個文本塊)並將它添加到C++/CX中的一個頁面(比如在運行時設置其行和列號的網格)。可能嗎?如何在運行時在C++/CX中創建添加WinRT對象?

+0

我不明白爲什麼這個問題導致減少的聲譽 – 2013-02-28 16:47:19

回答

1

只需在課堂上調用'ref new'就像其他任何對象一樣,並將其添加到網格的'Children'集合中。

爲了設置網格行和列,您需要通過調用網格上的SetRow/SetColumn來設置附加屬性。

這是通過命名xaml文件中的網格(使用x:Name屬性)最容易實現的,以便您可以通過代碼中的名稱引用它。 XAML:

<Grid x:Name="myGrid"> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 
</Grid> 

代碼隱藏:

auto textBlock = ref new TextBlock(); 
textBlock->Text = "this is my text"; 
myGrid->Children->Append(textBlock); 
myGrid->SetRow(textBlock, 1); 
myGrid->SetColumn(textBlock, 0); 
+0

,以及如何設置的屬性? textBlock-> VerticalAlignment = Center不起作用。 – 2013-03-01 09:12:49

+0

在代碼中,VerticalAlignment屬性的類型爲Windows :: UI :: Xaml :: VerticalAlignment。所以你需要使用該類型的枚舉來設置屬性。 C++名稱隱藏也會使這成爲一個問題,因爲頁面可能有自己的名爲VerticalAlignment的成員,所以您需要限定類型名稱。 'textBlock-> VerticalAlignment = Windows :: UI :: Xaml :: VerticalAlignment :: Center;' – 2013-03-01 21:24:36

+0

對不起,我沒有資格在別的聲望投票,我肯定會這樣做 – 2013-03-03 14:11:05

相關問題