我想使用c#中的usercontrol访问我的staticData。但为了做到这一点,我认为我需要在C#而不是xaml中定义资源。
任何人都可以帮助我吗?
项目中的所有内容都在工作,但是当我尝试访问我的表时,它不会返回任何内容,因为它只是在xaml中定义。
用户控件: GroupingZoomedInView.xaml
<UserControl
x:Class="CaiMU_Professor.Grouping.GroupingZoomedInView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:CaiMU_Professor.Grouping.Data"
xmlns:telerikGrid="using:Telerik.UI.Xaml.Controls.Grid"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid>
<Grid.Resources>
<local:PeopleViewModel x:Key="Model"/>
</Grid.Resources>
<telerikGrid:RadDataGrid x:Name="dataGrid" ItemsSource="{Binding Data,Source={StaticResource Model}}" AutoGenerateColumns="False" FontSize="{StaticResource ControlContentThemeFontSize}" SelectionUnit="Row">
<telerikGrid:RadDataGrid.GroupDescriptors>
<telerikGrid:DelegateGroupDescriptor>
<telerikGrid:DelegateGroupDescriptor.KeyLookup>
<local:AlpabeticGroupKeyLookup/>
</telerikGrid:DelegateGroupDescriptor.KeyLookup>
</telerikGrid:DelegateGroupDescriptor>
</telerikGrid:RadDataGrid.GroupDescriptors>
<telerikGrid:RadDataGrid.Columns>
<telerikGrid:DataGridTextColumn PropertyName="Template"/>
<telerikGrid:DataGridTextColumn PropertyName="data"/>
<telerikGrid:DataGridTextColumn PropertyName="info"/>
<telerikGrid:DataGridTextColumn PropertyName="score"/>
<telerikGrid:DataGridTextColumn PropertyName="result"/>
<telerikGrid:DataGridTextColumn PropertyName="repeats"/>
</telerikGrid:RadDataGrid.Columns>
</telerikGrid:RadDataGrid>
</Grid>
</UserControl>
GroupingZoomedInView.xaml.cs
public sealed partial class GroupingZoomedInView : UserControl, ISemanticZoomInformation
{
public String row;
public GroupingZoomedInView()
{
this.InitializeComponent();
this.dataGrid.SelectionChanged += this.SelectionChanged;
}
public void CompleteViewChangeFrom(SemanticZoomLocation source, SemanticZoomLocation destination)
{
var list = this.SemanticZoomOwner.ZoomedOutView as GridView;
if (list != null)
{
list.ItemsSource = source.Item;
}
}
public bool IsActiveView {get; set;}
public bool IsZoomedInView {get; set;}
public SemanticZoom SemanticZoomOwner{get; set;}
public void StartViewChangeFrom(SemanticZoomLocation source, SemanticZoomLocation destination)
{
source.Item = this.dataGrid.GetDataView().Items.OfType<IDataGroup>().Select(c => c.Key);
}
public void StartViewChangeTo(SemanticZoomLocation source, SemanticZoomLocation destination)
{
var dataview = this.dataGrid.GetDataView();
var group = dataview.Items.OfType<IDataGroup>().Where(c => c.Key.Equals(source.Item)).FirstOrDefault();
var lastGroup = dataview.Items.Last() as IDataGroup;
if (group != null && lastGroup != null)
{
this.dataGrid.ScrollItemIntoView(lastGroup.ChildItems[lastGroup.ChildItems.Count - 1], () =>
{
this.dataGrid.ScrollItemIntoView(group.ChildItems[0]);
});
}
}
private void SelectionChanged(object sender, DataGridSelectionChangedEventArgs e)
{
Templates temp = this.dataGrid.SelectedItem as Templates;
aux = this.dataGrid.SelectedItem;
}
}
我的静态数据
public class PeopleViewModel
{
private static List<Templates> staticData;
static PeopleViewModel()
{
Load();
}
public IList<Templates> Data
{
get
{
return staticData;
}
}
private static void Load()
{
XMLStuff xml = new XMLStuff();
List<Templates> tempList = xml.getControlOutput();
staticData = new List<Templates>();
foreach (Templates temp in tempList)
staticData.Add(temp);
}
}
答案 0 :(得分:0)
试
var model = this.Resources["Model] as PeopleViewModel;