나는 각 그리드가 게임 룸의 역할을하는 비디오 게임을 만들고 있습니다. 각 그리드 룸에는 사용할 수있는 것과 같은 많은 수의 오브젝트, 이미지 및 사운드 파일이 있습니다. 지금까지는 모두 하나의 큰 파일에 저장되었습니다. 그러나 이제는이 접근법이 많은 자원을 낭비한다고 들었습니다.파일에서 xaml 코드로 그리드로드하기, 메인 코드에서 활성화시키기
내 계획은 이러한 모든 그리드의 xaml 코드를 별도의 파일로 저장 한 다음 런타임에 관련 코드를 일반적인 코드로로드하는 것입니다. 대한
지금 XAML은 다음과 같이 약 같습니다<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" x:Name="wdwMain" x:Class="RealityIncognita.MainWindow"
Height="900" Width="1600" ResizeMode="NoResize" WindowState="Maximized"
Cursor="Cross" WindowStyle="None" Loaded="wdwMain_Loaded">
<Viewbox Stretch="Fill">
<Grid x:Name="areaContainer" HorizontalAlignment="Left" Height="900"
VerticalAlignment="Top" Width="1600">
<Grid x:Name="areaMain">
<Grid.Background>
<ImageBrush
ImageSource="Resources/Images/Interface/main_interface.jpg"/>
</Grid.Background>
<Grid x:Name="areaShowers" HorizontalAlignment="Left" Height="700"
Margin="1653,790,-1561,-590" VerticalAlignment="Top" Width="1508"
IsVisibleChanged="areaShowers_IsVisibleChanged">
을 다음 예제 - areaShowers 관련 룸 그리드입니다. 지금까지는 메인 그리드와 마찬가지로 다른 모든 그리드와 마찬가지로 메인 파일에 저장되어 있었고 필요할 때 마진을 변경하여 "areaMain"(그리드)에 배치했습니다.
이제 각 룸을 파일에 넣은 다음 필요할 때로드하고 싶지 않을 때 메모리에서 제거하려고합니다.
예를 들어, 빈 그리드 "areaGeneric"을 만들고이를 원래 xaml에 추가합니다.
그래서 나는 이와 같은 것을 원합니다. 이전에 어떤 시도도 할 수 없습니다. 어떻게 할 수 있는지 정말 모르니까요.
Grid new_grid = new Grid;
new_grid = load from file (areaRoom.xaml); (file is among the project's
resources)
areaGeneric = new_grid;
런타임시 그리드 xaml을로드 한 다음 메인 코드에서 그리드를 전환 할 수 있습니까?
감사합니다, Evgenie
불행히도 문제가 있습니다. 관련 그리드의 내부 이미지 \ buttons \ void는 작동하지 않습니다. " 'RealityIncognita.Room'은 'objHibernation1Pod4_MouseEnter'에 대한 정의를 포함하지 않고 'RealityIncognita.Room'유형의 첫 번째 인수를 허용하는 확장 메소드 'objHibernation1Pod4_MouseEnter'를 찾을 수 없습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?) – EvgenieT
이 오류는 사용자가 방을 분리하기 전에 주 윈도우에 있던 사용자 정의 컨트롤의 코드에서 이벤트 핸들러가 누락되었다는 것을 나타내는 것 같습니다. 사용자 정의 컨트롤에 핸들러를 추가해야합니다. – Jonny
미안하지만, 더 많은 질문이 있습니다. 첫째, 모든 것을 한꺼번에로드하는 것을 피하는 것이 었습니다. 그리드의 분리가 실제로이 작업에 도움이 될 것입니다. 문제는? 즉, 새 파일에 대한 모든 경로를 업데이트하면 어떻게됩니까? 그리고 두 번째 - 예제를 제공하거나 핸들러를 추가하는 방법을 정확히 링크 할 수 있습니까? 각 표에는 al 버튼과 공백은 없습니다 - 하나씩 연결해야합니까? – EvgenieT