我创建了一个简单的用户控件并在xaml文件中使用它(mainWindow.xaml
)。
我命名了用户控件的实例VolumeMeter
,然后尝试在cs文件(mainWindow.cs
)的函数中使用它但名称无法识别
当前上下文中不存在该名称
为什么会这样,我该怎么做才能解决它?
XAML:
<Window x:Class="testUserControl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:MyNameSpace="clr-namespace:testUserControl.UserControls"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Name="btnShow" Content="Show"></Button>
<StackPanel Name="stkTest" Grid.Row="1" Orientation="Vertical">
<MyNameSpace:UserControl1 Name="VolumeMeter"></MyNameSpace:UserControl1>
</StackPanel>
</Grid>
</Window>
cs文件:
namespace testUserControl
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnShow_Click_1(object sender, RoutedEventArgs e)
{
VolumeMeter.Enable = false;//Compile error
}
}
}
答案 0 :(得分:3)
尝试使用x:Name
代替Name
[msdn]:
...
<StackPanel Name="stkTest" Grid.Row="1" Orientation="Vertical">
<MyNameSpace:UserControl1 x:Name="VolumeMeter"></MyNameSpace:UserControl1>
</StackPanel>
...
答案 1 :(得分:1)
使用x:名称可行。请参阅In WPF, what are the differences between the x:Name and Name attributes?以获得非常好的解释。
答案 2 :(得分:0)
您应该使用x:Name
而不是Name
看到这篇文章,看看差异
In WPF, what are the differences between the x:Name and Name attributes?