modern-ui ListPages - 在没有 MVVM 的情况下使用 C# 填充链接
modern-ui ListPages - Populate Links using C# without MVVM
当我创建一个新的 listPage 时,xaml 代码如下:
<Grid Style="{StaticResource ContentRoot}">
<!-- TODO: set @SelectedSource -->
<mui:ModernTab Layout="List">
<mui:ModernTab.Links>
<!-- TODO: set @Source -->
<mui:Link DisplayName="Item 1" />
<mui:Link DisplayName="Item 2" />
</mui:ModernTab.Links>
</mui:ModernTab>
</Grid>
问题是我希望能够在 C# 中以编程方式创建 Item1、Item2..。也就是说 Link 应该从我将动态添加的列表中填充。我没有使用 MVVM 并寻找答案。如有任何建议,我们将不胜感激。
这是我目前在 Xaml
中尝试过的方法
<mui:ModernTab Layout="List" Links="{Binding Path=IPList}">
在 C# 中
public partial class ListOfIP : UserControl
{
public LinkCollection IPList { get; private set; }
public ListOfIP()
{
InitializeComponent();
IPList = new LinkCollection();
testMethod(IPList);
}
public void testMethod(LinkCollection IPList)
{
IPList.Add(new Link() { DisplayName = "IP1" });
IPList.Add(new Link() { DisplayName = "IP2" });
IPList.Add(new Link() { DisplayName = "IP3" });
}
}
抱歉,这是一个愚蠢的尝试,但我仍在学习 WPF 中的绑定。
如果您要绑定的数据位于用户控件的代码隐藏中,则将用户控件的 DataContext
设置为代码隐藏 class:
public partial class ListOfIP : UserControl
{
public LinkCollection IPList { get; private set; }
public ListOfIP()
{
DataContext = this;
InitializeComponent();
IPList = new LinkCollection();
testMethod(IPList);
}
public void testMethod(LinkCollection IPList)
{
IPList.Add(new Link() { DisplayName = "IP1" });
IPList.Add(new Link() { DisplayName = "IP2" });
IPList.Add(new Link() { DisplayName = "IP3" });
}
}
XAML 正确:
<mui:ModernTab Layout="List" Links="{Binding Path=IPList}">
我的问题是您试图将 ModernWindow
控件的内容直接设置为某些 UI 控件。这不适用于 ModernWindow
,因为它有一个内置的导航系统。您需要将 ModernWindow
的 ContentSource
属性 设置为指向 UserControl
.
的 URI
<mui:ModernWindow x:Class="ModernUITest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
Title="MainWindow" Height="350" Width="525"
ContentSource="/Pages/Home.xaml">
</mui:ModernWindow>
Pages/Home.xaml:
<UserControl x:Class="ModernUITest.Pages.Home"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mui="http://firstfloorsoftware.com/ModernUI">
<Grid>
<mui:ModernTab Layout="List" Links="{Binding Path=IPList}"/>
</Grid>
</UserControl>
对我来说,当我从
更改订单时工作
public ListOfIP()
{
DataContext = this;
InitializeComponent();
IPList = new LinkCollection();
testMethod(IPList);
}
至
public ListOfIP()
{
DataContext = this;
IPList = new LinkCollection();
testMethod(IPList);
InitializeComponent();
}
而且效果很好 ;)
当我创建一个新的 listPage 时,xaml 代码如下:
<Grid Style="{StaticResource ContentRoot}">
<!-- TODO: set @SelectedSource -->
<mui:ModernTab Layout="List">
<mui:ModernTab.Links>
<!-- TODO: set @Source -->
<mui:Link DisplayName="Item 1" />
<mui:Link DisplayName="Item 2" />
</mui:ModernTab.Links>
</mui:ModernTab>
</Grid>
问题是我希望能够在 C# 中以编程方式创建 Item1、Item2..。也就是说 Link 应该从我将动态添加的列表中填充。我没有使用 MVVM 并寻找答案。如有任何建议,我们将不胜感激。
这是我目前在 Xaml
中尝试过的方法<mui:ModernTab Layout="List" Links="{Binding Path=IPList}">
在 C# 中
public partial class ListOfIP : UserControl
{
public LinkCollection IPList { get; private set; }
public ListOfIP()
{
InitializeComponent();
IPList = new LinkCollection();
testMethod(IPList);
}
public void testMethod(LinkCollection IPList)
{
IPList.Add(new Link() { DisplayName = "IP1" });
IPList.Add(new Link() { DisplayName = "IP2" });
IPList.Add(new Link() { DisplayName = "IP3" });
}
}
抱歉,这是一个愚蠢的尝试,但我仍在学习 WPF 中的绑定。
如果您要绑定的数据位于用户控件的代码隐藏中,则将用户控件的 DataContext
设置为代码隐藏 class:
public partial class ListOfIP : UserControl
{
public LinkCollection IPList { get; private set; }
public ListOfIP()
{
DataContext = this;
InitializeComponent();
IPList = new LinkCollection();
testMethod(IPList);
}
public void testMethod(LinkCollection IPList)
{
IPList.Add(new Link() { DisplayName = "IP1" });
IPList.Add(new Link() { DisplayName = "IP2" });
IPList.Add(new Link() { DisplayName = "IP3" });
}
}
XAML 正确:
<mui:ModernTab Layout="List" Links="{Binding Path=IPList}">
我的问题是您试图将 ModernWindow
控件的内容直接设置为某些 UI 控件。这不适用于 ModernWindow
,因为它有一个内置的导航系统。您需要将 ModernWindow
的 ContentSource
属性 设置为指向 UserControl
.
<mui:ModernWindow x:Class="ModernUITest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
Title="MainWindow" Height="350" Width="525"
ContentSource="/Pages/Home.xaml">
</mui:ModernWindow>
Pages/Home.xaml:
<UserControl x:Class="ModernUITest.Pages.Home"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mui="http://firstfloorsoftware.com/ModernUI">
<Grid>
<mui:ModernTab Layout="List" Links="{Binding Path=IPList}"/>
</Grid>
</UserControl>
对我来说,当我从
更改订单时工作public ListOfIP()
{
DataContext = this;
InitializeComponent();
IPList = new LinkCollection();
testMethod(IPList);
}
至
public ListOfIP()
{
DataContext = this;
IPList = new LinkCollection();
testMethod(IPList);
InitializeComponent();
}
而且效果很好 ;)