C# XAML前端中的内联c:为什么这在XAML中不起作用?

C# XAML前端中的内联c:为什么这在XAML中不起作用?,c#,winrt-xaml,win-universal-app,windows-8.1-universal,C#,Winrt Xaml,Win Universal App,Windows 8.1 Universal,场景:在UWP中开发一个厚客户端,使用面向Windows 8.1/10 a应用商店桌面的c 在我的用户界面中,我尝试使用以下内联 <StackPanel Grid.Column="0"> <TextBlock x:Name="Qty_Size_Crust" Margin="25,10,20,0" Padding="0,0,0,0" TextAlignment="Left" TextWrapping="Wrap" MaxHeight="25" Foregroun

场景:在UWP中开发一个厚客户端,使用面向Windows 8.1/10 a应用商店桌面的c

在我的用户界面中,我尝试使用以下内联

    <StackPanel Grid.Column="0">
    <TextBlock  x:Name="Qty_Size_Crust" Margin="25,10,20,0" Padding="0,0,0,0" TextAlignment="Left" TextWrapping="Wrap" MaxHeight="25" Foreground="#ff230909" FontFamily="Segoe UI" FontSize="16" xml:space="preserve" HorizontalAlignment="Left">
if ({Binding WidgetName} == "Backend")
{             
        <Run Text="{Binding ItemCode, Converter=ItemCodeToDescriptionConverter}"/> 
}
else
{
       <Run Text="See Administrator}"/> 
}
    </TextBlock>

编译器会接受这一点,但在执行过程中,我既看不到项目描述,也看不到管理员。为了完成这项工作,我还应该做些什么?我可以通过将代码放在ViewModel中来解决这个问题,但我想知道为什么它不起作用或者不应该起作用。

XAML不适用于内联脚本,所以答案很简单-它不受支持

在您的示例中,条件代码只是作为文本添加到TextBlock中,因此编译器接受它


至于您的特定问题的最佳解决方案,视图模型中的条件是一个好条件。TemplateSelector可以在视图端工作,但需要更多的代码。如果您希望能够测试它,视图模型实际上可能也是放置它的最佳位置,因此它确实是正确的方法。将逻辑放在视图层只会添加无法进行单元测试的代码。

我希望如此,伙计。那太酷了。我认为你的思维方式是ASP.Net。C只能存在于代码隐藏中。不在声明性代码中。对不起,我发誓我可以在XAML的旧版本中做到这一点。也许我的想法是……值得指出的是,TemplateSelector可能是XAML平台中性能最差的部分,不是一个好的选择。我推荐一种由代码隐藏中的某些东西控制的视觉状态。谢谢Filip,感谢您的洞察力!