我试图让我的应用程序更可定制,允许用户从拾色器对话框中选择一种颜色,然后实时更改应用程序的样式(使用DynamicResource)
如何更改驻留在的特定资源app.xaml?
我尝试过类似的东西,但没有运气(只是一个测试):
var colorDialog = new CustomControls.ColorPickerDialog();
var dResult = colorDialog.ShowDialog();
var x = Application.Current.Resources.Values.OfType<LinearGradientBrush>().First();
x = new LinearGradientBrush();
x.GradientStops.Add(new GradientStop(colorDialog.SelectedColor,1));
Run Code Online (Sandbox Code Playgroud)
这是app.xaml文件的摘录:
<Application.Resources>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0" x:Key="HeaderBackground">
<GradientStop Color="#82cb02" Offset="1"/>
<GradientStop Color="#82cb01" Offset="0.2"/>
<GradientStop Color="#629a01" Offset="0.5"/>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)
允许这种形式的可定制性(基本上只是改变一些颜色)到应用程序的最佳方法是什么?
[更新]
我刚从上一个被问到的问题中找到了这个答案,并尝试了但是我得到了与给定答案的评论中提到的相同的InvalidOperationException异常Petoj.以下是答案中的示例代码:
Xaml:
<LinearGradientBrush x:Key="MainBrush" StartPoint="0, 0.5" EndPoint="1, 0.5" >
<GradientBrush.GradientStops>
<GradientStop Color="Blue" Offset="0" />
<GradientStop Color="Black" Offset="1" />
</GradientBrush.GradientStops>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)
C#:
LinearGradientBrush myBrush = FindResource("MainBrush") as LinearGradientBrush;
myBrush.GradientStops[0].Color = …Run Code Online (Sandbox Code Playgroud) 我有一个UIWebView我怎么能得到它的滚动位置?
我知道,UIWebView有一个UIScroller子视图.但我无法抵消这个UIScroller(((
我目前在工作中使用定制的库.直到这个图书馆工作得非常好.从今天开始,它显然是假的.
库本身它基本上是函数邮件的包装器.它构建了"边界"部分和一切.
由于课程相当大,我不会在这里发布...但我想知道,理论上为什么邮件会返回错误的原因是什么?
sender<sender@email.com>[编辑]刚刚找到一个较小的功能,仍然无法正常工作,我会打印出来然后:
function send_html($from, $email, $subject = "AUCUN", $message, $cc = "", $bcc ="", $priotity = "3") {
$headers = "";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
if (strpos($from, "ourwebsite.com") != false || strpos($from, "rencontresportive.com") != "") {
$headers .= "From: Ourwebsite.com <" . $from . ">\r\n";
} else {
$headers .= "From: " . $from . " <" . $from . ">\r\n";
}
$headers .= "X-Sender: …Run Code Online (Sandbox Code Playgroud) 请参阅下面的代码示例.我需要ArrayList一个通用列表.我不想用foreach.
ArrayList arrayList = GetArrayListOfInts();
List<int> intList = new List<int>();
//Can this foreach be condensed into one line?
foreach (int number in arrayList)
{
intList.Add(number);
}
return intList;
Run Code Online (Sandbox Code Playgroud) 基本上,我有这个代码:
DirectoryInfo dir = new DirectoryInfo(@"\\MYNETWORK11\ABCDEFG\ABCDEFGHIJKL\00806\");
FileInfo[] files = dir.GetFiles("200810*");
Run Code Online (Sandbox Code Playgroud)
我希望它匹配任何以200810开头的文件.但是,它匹配的文件名为
20070618_00806.bak和20070817_00806.bak(星号不在文件名中,这是我可以包含下划线的唯一方法)
我在命令提示符下使用dir尝试了它,它也匹配这些文件.为什么?
编辑:
也许使用C:作为例子不是一件好事.我实际查询的目录是网络共享\\ MYNETWORK11\ABCDEFG\ABCDEFGHIJKL\00806 \
如果检查短名称与它有关,20070817_00806.bak不会是200708~1.bak吗?那也不匹配
我想gluSphere围绕一个圆周运动的固定点旋转,就像绕太阳运转的行星一样.
是否最好使用glRotatef或glTranslate?如果是这样,我应该按哪种顺序打电话给他们?
如何动态更改app.config文件中的connectionString?
我有一个用windows表单编写的应用程序,c#3.0和Linq到Sql.我需要在安装应用程序时更改连接字符串.我怎么做的?
当用户安装程序时,它必须显示一个表单,如果存在,则可以选择更改连接字符串,如果不存在则添加一个.
我想将高性能事件计时器(HPET)用于分析工具,以便快速进行高精度测量.timeGetTime在1ms时没有提供足够的分辨率,而QueryPerformanceCounter每次读取的速度比我想要的慢得多.我在研究这个问题时遇到了HPET,但我看不到任何关于如何实现它的样本.
那么我可以直接使用它(组装很好),还是我必须依赖Win32 API中内置的多媒体/高性能计时工具?
我有一个使用以下布局的应用程序:
alt text http://img15.imageshack.us/img15/238/screenshot003xbo.png
当应用程序启动时,焦点位于第一个TextView上,但如果您尝试在其中键入任何字母,焦点将直接转到选项卡.似乎我不是唯一一个与这个问题斗争的人,也许这与以下内容有关:
无论如何,你知道为什么会这样吗?当然,任何解决方法都将受到赞赏.
我发布下面的代码,以避免重载问题:
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:padding="5px"
android:orientation="vertical"
android:id="@+id/task_edit_panel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="50" >
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title"
android:textStyle="bold" />
<EditText android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<TabHost android:id="@+id/edit_item_tab_host"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@android:id/tabs" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="65px"> <!-- you need that if you don't want the tab content to overflow -->
<LinearLayout
android:id="@+id/edit_item_date_tab"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5px" >
<TextView android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud) 我有一个循环用户元素的方法,并根据一些给定的约束设置一个布尔值:
public void checkUsers( int constraint ) {
for(int i=0; i<nodeUsers().size(); i++) {
UserElement elem = nodeUsers().getUsersElementAt(i);
switch (constraint) {
case CHECK_ALL:
elem.setChecked(true); break;
case CHECK_NONE:
elem.setChecked(false); break;
case CHECK_NO_LANG:
if (elem.getLanguage() == null)
elem.setChecked(true);
else
elem.setChecked(false);
break;
// More cases
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道这个解决方案是否合适.也许我可以更好地编写不同的方法,如:
public void checkAllUsers() {
for(int i=0; i<nodeUsers().size(); i++) {
UserElement elem = nodeUsers().getUsersElementAt(i);
elem.setChecked(true);
}
}
public void checkNoUsers() {
for(int i=0; i<nodeUsers().size(); i++) {
UserElement elem = nodeUsers().getUsersElementAt(i);
elem.setChecked(false);
}
}
Run Code Online (Sandbox Code Playgroud)
//编辑:我添加了第三个案例.