C# 从另一个类访问XAML元素
是否可以从非主类访问xaml控件?我知道还有其他类似的线索,但我不确定它们是否适合我的情况 以前,我只在一个主类中制作所有内容的游戏。但现在,人们建议我改变这一点,因为以我的方式,消耗了太多的资源 首先,我创建了一个Item类C# 从另一个类访问XAML元素,c#,wpf,class,user-interface,C#,Wpf,Class,User Interface,是否可以从非主类访问xaml控件?我知道还有其他类似的线索,但我不确定它们是否适合我的情况 以前,我只在一个主类中制作所有内容的游戏。但现在,人们建议我改变这一点,因为以我的方式,消耗了太多的资源 首先,我创建了一个Item类 class classItem { public string ItemId; public string ItemName; public Image ItemImage; public int InventoryPosition; public Visibilit
class classItem
{
public string ItemId;
public string ItemName;
public Image ItemImage;
public int InventoryPosition;
public Visibility ItemVisibility;
public string MouseEnter_ItemExamineText;
public string MouseClick_ItemExamineText;
public MediaPlayer ItemExamineVoice;
public string MouseEnter_ItemUseText;
public string MouseClick_ItemUseText;
public MediaPlayer ItemUseVoice;
public string MouseEnter_ItemTakeText;
public string MouseClick_ItemTakeText;
public MediaPlayer ItemTakeVoice;
public string MouseEnter_ItemOpenCloseText;
public string MouseClick_ItemOpenCloseText;
public MediaPlayer ItemOpenCloseVoice;
public string MouseEnter_ItemMergeText;
public string MouseClick_ItemMergeText;
public MediaPlayer ItemMergeVoice;
public int ItemCurrentWidth;
public int[] ItemWidthResolutions = new int[6];
public int ItemCurrentHeight;
public int[] ItemHeightResolutions = new int[6];
public Thickness ItemCurrentMargin;
public Thickness[] ItemMarginResolutions = new Thickness[6];
// Generic Pre-set
public classItem()
{
ItemId = "";
ItemName = "";
ItemImage = null;
ItemVisibility=Visibility.Hidden;
InventoryPosition=0;
MouseEnter_ItemExamineText = "";
MouseClick_ItemExamineText = "";
ItemExamineVoice = null;
MouseEnter_ItemUseText = "";
MouseClick_ItemUseText = "";
ItemUseVoice = null;
MouseEnter_ItemTakeText = "";
MouseClick_ItemTakeText = "";
ItemTakeVoice = null;
MouseEnter_ItemOpenCloseText = "";
MouseClick_ItemOpenCloseText = "";
ItemOpenCloseVoice = null;
MouseEnter_ItemMergeText = "";
MouseClick_ItemMergeText = "";
ItemMergeVoice = null;
ItemWidthResolutions[0] = 1;
ItemWidthResolutions[1] = 1;
ItemWidthResolutions[2] = 1;
ItemWidthResolutions[3] = 1;
ItemWidthResolutions[4] = 1;
ItemWidthResolutions[5] = 1;
ItemCurrentWidth = ItemWidthResolutions[0];
ItemHeightResolutions[0] = 1;
ItemHeightResolutions[1] = 1;
ItemHeightResolutions[2] = 1;
ItemHeightResolutions[3] = 1;
ItemHeightResolutions[4] = 1;
ItemHeightResolutions[5] = 1;
ItemCurrentHeight = ItemHeightResolutions[0];
ItemMarginResolutions[0] = new Thickness(-1000,-1000,0,0);
ItemMarginResolutions[1] = new Thickness(-1000,-1000,0,0);
ItemMarginResolutions[2] = new Thickness(-1000,-1000,0,0);
ItemMarginResolutions[3] = new Thickness(-1000,-1000,0,0);
ItemMarginResolutions[4] = new Thickness(-1000,-1000,0,0);
ItemMarginResolutions[5] = new Thickness(-1000,-1000,0,0);
ItemCurrentMargin = ItemMarginResolutions[0];
}
// Item main class
public classItem(string Id, string Name, Image ItemImage,
Visibility Vis, int InventoryPosition,
string MouseEnter_ExamineText, string MouseClick_ExamineText,
MediaPlayer ExamineVoice,
string MouseEnter_UseText, string MouseClick_UseText,
MediaPlayer UseVoice,
string MouseEnter_TakeText, string MouseClick_TakeText,
MediaPlayer TakeVoice,
string MouseEnter_OpenCloseText, string MouseClick_OpenCloseText,
MediaPlayer OpenCloseVoice,
string MouseEnter_MergeText, string MouseClick_MergeText,
MediaPlayer MergeVoice,
int[] WidthResolutions, int[] HeightResolutions,
Thickness[] MarginResolutions)
{
this.ItemId = Id;
this.ItemName = Name;
this.ItemImage = ItemImage;
this.ItemVisibility = Vis;
this.InventoryPosition = InventoryPosition;
this.MouseEnter_ItemExamineText = MouseEnter_ExamineText;
this.MouseClick_ItemExamineText = MouseClick_ExamineText;
this.ItemExamineVoice = ExamineVoice;
this.MouseEnter_ItemUseText = MouseEnter_UseText;
this.MouseClick_ItemUseText = MouseClick_UseText;
this.ItemUseVoice = UseVoice;
this.MouseEnter_ItemTakeText = MouseEnter_TakeText;
this.MouseClick_ItemTakeText = MouseClick_TakeText;
this.ItemTakeVoice = TakeVoice;
this.MouseEnter_ItemOpenCloseText = MouseEnter_OpenCloseText;
this.MouseClick_ItemOpenCloseText = MouseClick_OpenCloseText;
this.ItemOpenCloseVoice = OpenCloseVoice;
this.MouseEnter_ItemMergeText = MouseEnter_ItemMergeText;
this.MouseClick_ItemMergeText = MouseClick_ItemMergeText;
this.ItemMergeVoice = ItemMergeVoice;
for (int i=0; i<=5; i++)
{
this.ItemWidthResolutions[i]=WidthResolutions[i];
this.ItemHeightResolutions[i]=HeightResolutions[i];
this.ItemMarginResolutions[i]=MarginResolutions[i];
}
this.ItemCurrentWidth = this.ItemWidthResolutions[0];
this.ItemCurrentHeight = this.ItemHeightResolutions[0];
this.ItemCurrentMargin = this.ItemMarginResolutions[0];
}
}
那么,我想在这些空隙中使用什么样的线
有一个标签“lblTextOutput”用于显示相关文本
lblTextOutput.Content="You took an item";
有很多声音文件,我通常想在每个空格中播放一个
sndYouTookAnItem.Play();
还有视觉上的变化。例如:
imgBigBeautifulItem.Visibility=Visibility.Hidden;
所有xaml元素都在名为“MainWindow.xaml”的文件中
但是,我没有找到从类“classItem”或“ClassTown”访问xaml元素的方法。我试着用
MainWindow.lblTextOutput="BLAHBLAH"
但编译器仍然没有看到它们。如何解决这个问题?或者,如果这种方法不正确,如何更好地做到这一点
谢谢,,
Evgenie您好,您能将您的代码块格式化,适当缩进,使其更可读吗?已编辑。很抱歉没有从一开始就这么做。也许像这样的东西应该添加到这个新类中?public MainWindow(){InitializeComponent();}您好,您能将代码块的格式正确地缩进以使其更可读吗?已编辑。很抱歉没有从一开始就这么做。也许像这样的东西应该添加到这个新类中?公共主窗口(){InitializeComponent();}
MainWindow.lblTextOutput="BLAHBLAH"