使用C#而不是xaml定义资源

时间:2013-03-14 17:15:31

标签: c# wpf xaml resources wpfdatagrid

我想使用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);
    }
}

1 个答案:

答案 0 :(得分:0)

var model = this.Resources["Model] as PeopleViewModel;