XAML 通过UserControl进行数据绑定

wb1gzix0  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(178)

下面是一个数据绑定的最小示例。我想知道如何将ToggleSwitchButton分解为不同的UserControl,同时保持数据绑定。

//MainWindow.xaml
<StackPanel>
    <ToggleSwitch x:Name="MyToggle" OffContent="Off" OnContent="On"/>
    <Button IsEnabled="{x:Bind MyToggle.IsOn, Mode=OneWay}" Content="Click Me"/>
</StackPanel>

// MainWindow.idl
Microsoft.UI.Xaml.Controls.ToggleSwitch MyToggle{ get; };
snz8szmq

snz8szmq1#

公开MyToggleControl和MyToggle,以便"{x:Bind MyToggleControl.MyToggle.IsOn}"可用。然后创建IsButtonEnabled属性,以便IsButtonEnabled="{x:Bind ...}"可以工作。
UserControlToggle公开为MainWindow的公共属性

// MainWindow.xaml
<StackPanel>
    <local:UserControlToggle x:Name="MyToggleControl" x:FieldModifier="public"/>
    <local:UserControlButton IsButtonEnabled="{x:Bind MyToggleControl.MyToggle.IsOn, Mode=OneWay}"/>
</StackPanel>

// MainWindow.idl needed for cppwinrt as x:FieldModifier doesn't work
import "UserControlToggle.idl";
UserControlToggle MyToggleControl{ get; };

ToggleSwitch公开为UserControlToggle的公共属性

// UserControlToggle.xaml
<ToggleSwitch x:Name="MyToggle" x:FieldModifier="public" OffContent="Off" OnContent="On"/>

// UserControlToggle.idl
Microsoft.UI.Xaml.Controls.ToggleSwitch MyToggle{ get; };

将buttons IsEnabled属性 Package 为UserControlButton上的属性

// UserControlButton.xaml
<Button x:Name="myButton" Click="myButton_Click">Enable/Disable</Button>

// UserControlButton.idl
Boolean IsButtonEnabled;

// UserControlButton.xaml.cpp
bool UserControl::IsButtonEnabled()
{
    return myButton().IsEnabled();
}

void UserControl::IsButtonEnabled(bool value)
{
    myButton().IsEnabled(value);
}

相关问题