Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin VisualStateManager中将状态传递给子视图_C#_.net_Xamarin_Xamarin.forms - Fatal编程技术网

C# 在Xamarin VisualStateManager中将状态传递给子视图

C# 在Xamarin VisualStateManager中将状态传递给子视图,c#,.net,xamarin,xamarin.forms,C#,.net,Xamarin,Xamarin.forms,我有一些嵌套的ContentView。我们可以这样说: MasterView - TwoRowView --- TitleView ----- TitleLabel ----- DateLabel ----- Icon --- ContentView ----- TwoRowView ------- DetailTitleView ------- DetailBodyView - TwoRowView --- [...] 在某个时刻,在TwoRowViewcode behind中,我正

我有一些嵌套的ContentView。我们可以这样说:

MasterView    
- TwoRowView
--- TitleView
----- TitleLabel
----- DateLabel
----- Icon
--- ContentView
----- TwoRowView
------- DetailTitleView
------- DetailBodyView
- TwoRowView
--- [...]
在某个时刻,在
TwoRowView
code behind中,我正在通过
VisualStateManager.gostate([TitleView],[stateName])
设置
TitleView
状态(这是pseudcode,与这些不一样) 在现实中,我只是不想把你和不相关的代码和变量名称混淆;))对于某些状态,让我们把它命名为“扩展” 但从那一点开始,我想做的是将标题标签的状态设置为这个状态

当在父视图中设置时,将
VisualStateManager
状态传递给子视图的最佳方式是什么?或者我应该采取完全不同的方法


请帮助:)

根据您的描述,我认为使用
VisualStateManager.gostate
是一个不错的选择。 您只需要关注何时将状态发送回代码中的控件。例如,在下面的代码中,创建一个方法
GoToState
将雕像传递给视图或控件

public partial class VsmValidationPage : ContentPage
{
public VsmValidationPage ()
{
    InitializeComponent ();

    GoToState(false);
}

void OnTextChanged(object sender, TextChangedEventArgs args)
{
    bool isValid = Regex.IsMatch(args.NewTextValue, @"^[2-9]\d{2}-\d{3}-\d{4}$");
    GoToState(isValid);
}

void GoToState(bool isValid)
{
    string visualState = isValid ? "Valid" : "Invalid";
    VisualStateManager.GoToState(helpLabel, visualState);
    VisualStateManager.GoToState(submitButton, visualState);
}
}

谢谢你们的重播,但问题有点复杂。在您的示例代码中,某些内部可检测的内容(文本更改)会导致样式更改。在我的例子中,更改来自外部-父ContentView正在子视图中设置状态,这些子视图需要将状态更改传递给它的子视图。您能分享一个关于您的问题的演示吗?