0

嘿嘿,

我想知道是否可以将多个控件分配给 XAML 中的属性。

假设我的 XAML 中有 2 个控件:

<Button x:Name="_Btn1 Content="Button 1" />
<Button x:Name="_Btn2 Content="Button 2" />

<local:MyControl x:Name="_MyCtrl" Controls="{what goes here?}" />

或者我应该将我的控件声明为容器控件并将所有控件放入其中,如下所示:

<local:MyControl x:Name="_MyCtrl">
    <Button x:Name="_Btn1 Content="Button 1" />
    <Button x:Name="_Btn2 Content="Button 2" />
</local:MyControl>

提前谢谢!

格茨,德维

4

3 回答 3

0

如果您让MyControl继承ItemsControl ,您可以这样做。

那么这个

<local:MyControl x:Name="_MyCtrl">
   <Button x:Name="_Btn1 Content="Button 1" />
    <Button x:Name="_Btn2 Content="Button 2" />
</local:MyControl>

会工作,这

<local:MyControl x:Name="_MyCtrl" ItemsSource="ViewModelorControlCollection" />

也会起作用。

ViewModelorControlCollection 可以在 ViewModel 中定义,也可以在 xaml 中定义为静态资源。

于 2012-10-23T07:59:41.407 回答
0

这真的取决于你要做什么。通常,您只需定义 a 即可DataTemplate

<local:MyControl x:Name="_MyCtrl">
    <local:MyControl.ControlsTemplate>
        <DataTemplate>
            <StackPanel>
                <Button x:Name="btn1" Content="Button 1" />
                <Button x:Name="btn2" Content="Button 2" />
            </StackPanel>
        </DataTemplate>
    </local:MyControl.ControlsTemplate>
</local:MyControl>
于 2012-10-23T08:04:41.773 回答
0

你肯定需要某种容器。这可以是一个简单的列表或一个专门的集合。无论您在控制中使用什么。

<local:MyControl>
    <local:MyControl.Controls>
        <ControlCollection> <!-- or whatever -->
            <Button/>
            <Button/>
        </ControlCollection>
    </local:MyControl.Controls>
</local:MyControl>

如果您使用 aPanel或类似的类,则无需ControlCollection显式指定。然后,您可以定义控件,例如StackPanel.

于 2012-10-23T08:05:10.877 回答