XAML 내에서 DataContext 속성에 IntelliSense가 작동하도록 설정
6316 단어 VisualStudioXamlMVVMWPF
여기에서는 아래와 같은 View와 ViewModel이 있다고 가정합니다.
ViewModel.cs
namespace WpfTest
{
class ViewModel
{
public string ViewModelText => "Test String";
}
}
MainWindow.xaml
<Window x:Class="WpfTest.MainWindow"
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"
xmlns:local="clr-namespace:WpfTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock FontSize="50" Text="{Binding ViewModelText}"/>
</Grid>
</Window>
이 때,
{Binding ViewModelText}
의 개소는 보완이 효력 없이 수타할 필요가 있습니다.모처럼 Visual Studio라고 하는 고기능인 IDE를 사용하고 있는데 철자 미스등 하고 있으면 아깝습니다.
그래서 XAML 에디터 내에서 인텔리센스를 활성화할 수 있는 두 가지 방법이 있습니다.
① XAML 내에서 DataContext 작성
MainWindow.xaml
<Window x:Class="WpfTest.MainWindow"
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"
xmlns:local="clr-namespace:WpfTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:ViewModel/>
</Window.DataContext>
<Grid>
<TextBlock FontSize="50" Text="{Binding ViewModelText}"/>
</Grid>
</Window>
<local:ViewModel/>
를 <local:ViewModel x:Name="vm"/>
등으로 하면 코드 숨김에서 vm이라는 변수를 사용할 수도 있습니다.이 방법이라면 ViewModel이 인수없는 생성자를 가져야한다거나 DataContext의 자유도가 그다지 높지 않습니다.
이 경우 다음 방법을 사용합니다.
②디자인용 설정 추가
MainWindow.xaml
<Window x:Class="WpfTest.MainWindow"
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"
xmlns:local="clr-namespace:WpfTest"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:ViewModel}"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock FontSize="50" Text="{Binding ViewModelText}"/>
</Grid>
</Window>
이쪽은
d:DataContext="{d:DesignInstance local:ViewModel}"
라고 덧붙였습니다.d:
는 설계용 설정으로 빌드시에는 무시되므로, 별도 DataContext 를 설정할 필요가 있습니다.이쪽이 자유도가 높아집니다.
또한 인수가없는 생성자가 있다면
d:DataContext="{d:DesignInstance local:ViewModel, IsDesignTimeCreatable=True}"
그렇게 하면 실제로 인스턴스를 만든 상태에서의 표시도 볼 수 있습니다.IntelliSense가 작동하는 상태에서 편안하게 XAML을 작성하십시오.
Reference
이 문제에 관하여(XAML 내에서 DataContext 속성에 IntelliSense가 작동하도록 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/FKbelm/items/10f9276e217b5bf83cb0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)