[英]How to set ScaleTransform ScaleX property value in xaml from xaml.cs
[英]Variable value set in Controller. How to get that in XAML.cs?
我有一個MVC4應用程序。 在獲取數據庫響應時,我將響應中的特定值分配給靜態變量(在“名稱空間A”中聲明)。 設置它在命名空間B中的運行情況很好。但是,當嘗試在XAML.cs(例如命名空間C)中檢索該值時,它總是返回0。
所有這三個服務器都在服務器上的同一應用程序池下運行。
我知道控制器總是可以將值傳遞給View,然后再從該視圖傳遞到Silverlight。 由於這只是單個值(“長”類型),我想探討是否有一種像全局變量那樣的方法,其值設置在Controller級別並在XAML.cs中讀取
我的CSHTML代碼:
<object id="slvObject" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="800px">
@{
string sourceValue = @"/../../*.xap";
string xappath = HttpContext.Current.Server.MapPath(@"") + @"\" + sourceValue;
DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath);
sourceValue = sourceValue + "?ignore=" + xapCreationDate.ToString();
}
<param name="source" value="~/../../*.xap" />
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="windowless" value="true"/>
<param name="minRuntimeVersion" value="5.0.60818.0" />
<param name="initParams" value="@DataKeyNameConstants.val1=@val1,@DataKeyNameConstants.val2=@val2"/>
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.60818.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
我在其中調用Mainpage.xaml.cs構造函數的地方有app.xaml.cs。 從構造函數中,我有一個調用method1()
XAML.cs:
private void method1()
{
string str = GetApplicationAbsoluteURL() + "/MyController/GetValue?val1=" + _val1.ToString() + "&val2=" + _val2.ToString();
MyHelper.ReadDataAsynchronously(str, CompleteTask);
}
調節器
public string GetValue(int val1, int val2)
{
GetValueResponse _valueResponse = _serviceClient.GetValue(val1, val2);
//In this _valueResponse, I get a value Id "_valueResponse.Id" which is of long type. I would like that value to be sent to XAML.cs (May be if it can be stored in a global variable and used there)
return _valueResponse.XMLValue;
}
然后控件進入我的XAML.cs文件的CompleteTask方法:
private void CompleteTask(object sender, OpenReadCompletedEventArgs e)
{
//Here is where I would like to read the value and it comes "0" all the time
}
我還要問一件事。 如果我們可以通過某種方式實現這一目標,那么是否會在每次分配long變量時刷新此值? (即我的問題的原因是,由於.xap文件是預先編譯的,所以我不希望它記錄一次值並一直使用它。我希望每次調用該頁面時都重新加載該值。因為值可能會有所不同)。
感謝您的幫助!
請記住,XAP文件在瀏覽器中運行,因此它位於與服務器端代碼(控制器等)完全不同的域中。
假設您每次頁面加載僅需要加載一次值,則這樣做的方法是使用initParams
服務器端設置其值。 只需擴展您已經在做的事情-在DataKeyNameConstants
添加“ val3”,設置@val3 = your constant
,然后使用:
<param name="initParams" value="@DataKeyNameConstants.val1=@val1,@DataKeyNameConstants.val2=@val2,@DataKeyNameConstants.val3=@val3"/>
然后,在Silverlight代碼中, 檢索值Application_Startup
:
private void Application_Startup(object sender, StartupEventArgs e)
{
MyConstants.MyConstant = e.InitParams["MyConstantKey"];
}
現在,您可以在Silverlight應用程序的靜態變量( MyConstants
或其他任何變量)中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.