我正在尝试在轮播中绑定一个可重复使用的按钮,我想要实现的是添加 6 个按钮,每个按钮将有一个命令,根据按钮名称将导航到正确的页面。
\n\n我可以通过这样做来做到这一点:
\n\n<toolkitcontrols:Carousel x:Name="NavigationMenuCarouselPanel"\n HorizontalAlignment="Center"\n VerticalAlignment="Center"\n Orientation="Horizontal"\n ItemsSource="{x:Bind ViewModel.MenuList, Mode=OneWay}"\n ItemMargin="25"\n ItemDepth="160"\n ItemRotationX="180"\n ItemRotationY="25"\n ItemRotationZ="0"\n SelectedIndex="2"\n Grid.Row="1">\n <toolkitcontrols:Carousel.EasingFunction>\n <CubicEase EasingMode="EaseOut"/>\n </toolkitcontrols:Carousel.EasingFunction>\n <Button Command="{x:Bind ViewModel.NavigateToPage1, Mode=OneWay}"\n Content="{x:Bind ViewModel.Name, Mode=OneWay}"/>\n </toolkitcontrols:Carousel>\nRun Code Online (Sandbox Code Playgroud)\n\n如果我这样做,我将添加 5 个以上的按钮,并且我必须为每个按钮编写属性。
\n\n因此,我想使用 UserControl 并编写如下内容:
\n\n<toolkitcontrols:Carousel x:Name="NavigationMenuCarouselPanel"\n HorizontalAlignment="Center"\n VerticalAlignment="Center"\n Orientation="Horizontal"\n ItemsSource="{x:Bind ViewModel.MenuList, Mode=OneWay}"\n ItemMargin="25"\n ItemDepth="160"\n ItemRotationX="180"\n ItemRotationY="25"\n ItemRotationZ="0"\n SelectedIndex="2"\n Grid.Row="1">\n <toolkitcontrols:Carousel.EasingFunction>\n <CubicEase EasingMode="EaseOut"/>\n </toolkitcontrols:Carousel.EasingFunction>\n <toolkitcontrols:Carousel.ItemTemplate>\n <DataTemplate x:DataType="data:ButtonInfo">\n <usercontrolvm:NavigationMenuButtonTemplate NavigateToPageCommand="{Binding NavigateToPageCommand}"/>\n </DataTemplate>\n </toolkitcontrols:Carousel.ItemTemplate>\n </toolkitcontrols:Carousel>\nRun Code Online (Sandbox Code Playgroud)\n\n但我没能做到这一点,我找到了一些教程,但据我所知,所有这些都会让我写出这样的代码:
\n\n<usercontrolvm:NavigationMenuButtonTemplate NavigateToPageCommand="{Binding NavigateToPageCommand}"/>\nRun Code Online (Sandbox Code Playgroud)\n\n大约 6 次,我不知道如何将 …
好.我正在按照一个教程来掌握MVVM模式到我的应用程序.
我已经很好地遵循了教程,我得到了命令的一部分,当我尝试将命令应用于按钮时,它似乎根本无法工作,我的按钮永远不会禁用.我已经看过其他MVVM源代码,我的代码似乎没问题,除了我在互联网上发现这个教程是为了WPF,但它也适用于UWP Windows 10应用程序.
所以我会粘贴我的类和Xaml视图.
这是我的模特:
using System.ComponentModel;
namespace MVVMDemo.Model
{
public class Student : INotifyPropertyChanged
{
private string firstName;
private string lastName;
public string FirstName
{
get
{
return firstName;
}
set
{
if (firstName != value)
{
firstName = value;
RaisePropertyChanged("FirstName");
RaisePropertyChanged("FullName");
}
}
}
public string LastName
{
get { return lastName; }
set
{
if (lastName != value)
{
lastName = value;
RaisePropertyChanged("LastName");
RaisePropertyChanged("FullName");
}
}
}
public string FullName
{
get
{
return firstName + …Run Code Online (Sandbox Code Playgroud)